2011-01-05 1 views
8

Ich benutze Nunit 2.5.9.10348 und versuche, den aktuellen Testnamen im TearDown-Ereignis zu extrahieren, damit ich einen Screengrab-Dateinamen dem Testnamen zuweisen kann, dieser jedoch immer null ist (siehe Anhang) Bild). Die private _context Variable hat den TestName, aber das nützt mir nichts!Nunit - TestContext.CurrentContext.Test funktioniert nicht

Hat jemand Erfolg mit dieser neuen TestContext Funktionalität (von 2.5.7).

alt text

Antwort

3

Von Ihrem Screenshot sehe ich, dass _context Tasten „Testname“ und „Eigenschaften“ hat. Aber TestAdapter sucht nach Schlüssel "Test.Name" für Name und "Test.Properties" für Eigenschaften. Also stimmt etwas mit der TestContext-Initialisierung nicht (ich denke, dass falsche Daten an Remoting.Messaging.CallContext übergeben wurden).

Nach ein wenig Nachforschungen (siehe Kommentare): NUnit Tests sollten von NUnit Testumgebung für Context ausgeführt werden.

+0

Versuchen Sie dies - keine Freude. Was ich jedoch bemerkt habe, ist, dass der Testname innerhalb des Debuggers nur Null ist. Die gleichen Tests, die in der TeamCity- oder der nunit GUI-Konsole ausgeführt werden, geben den Testnamen aus. – redsquare

+0

Ich wusste nicht, dass Sie Tests ohne GUI ausführen. Und das sollte der Grund sein - ich denke CallContext wird von Testumgebung initialisiert. Wenn Sie den Debugger an die NUnit-GUI anfügen, können Sie sehen, dass CallContext ordnungsgemäß initialisiert wird. –

+0

Ja, ich habe ein wenig Nachforschungen angestellt - CallContext wird während der Tests von NUnit initialisiert (nicht von einem Plugin zu Visual Studion). Es gibt die Methode NUnit.Core.TestMethod.RunTestInContext(), die Kontextinformationen einrichtet. Ohne diesen Kontext wird der Kontext leer sein. –

0

hatte ich das gleiche Problem. Es ereignete sich, als in einem TearDown Methode I Methode ausgeführt, die tatsächlich die Teardown

[TearDown] 
public void CleanUp() 
{ 
    TestContext.CurrentContext.Test.FullName; //!=null 
    someClassInstance.DoTearDown(); 
} 

class SomeClass 
{ 
    public void DoTearDown() 
    { 
      TestContext.CurrentContext.Test.FullName; //==null 
    } 
} 

Ich habe keine Ahnung, warum, aber es schien so zu machen war. Ist es dein Fall?

UPDATE: Nun schaute ich auf dem Screenshot, also ist es nicht Ihr Fall :)

0

Gleiches Problem mit R # Test Runner. Gerade heruntergeladen NUnit Quellen und eine Problemumgehung in TestAdapter hinzugefügt, um es mit r #

+0

Release Build (online für ein paar Wochen) http://dl.dropbox.com/u/9569672/dexter/nunit.framework.dll –