2017-09-24 2 views
0

Hintergrund

Eine NUnit-Framework-Erweiterung, die ich auf Bedürfnisse gerade arbeitete das Ergebnis/Ergebnis der einzelnen Tests innerhalb eines ITestAction Attributs wissen, wie so:Kann NUnit TestContext.CurrentContext in parallelen Tests verwendet werden?

public class MyFrameworkExtensionAttribute : Attribute, ITestAction 
{ 
    public void BeforeTest(ITest test) 
    { /* Omitted, not relevant to this question */ } 

    public void AfterTest(ITest test) 
    { 
    var result = TestContext.CurrentContext.Result; 
    var resultIsSuccess = result.Outcome.Status == TestStatus.Passed; 
    // Then go on to do stuff with that resultIsSuccess variable 
    } 
} 

Beachten Sie die erste Zeile in den AfterTest Methode; Ich verwende eine statische Referenz: TestContext.CurrentContext. Die ITest Schnittstelle stellt das Ergebnis des Tests nicht zur Verfügung, so scheint es Testkontext ist der einzige Weg.

Frage

Und meine Frage ist nun - weil NUnit 3.x enthält Funktionalität Tests parallel ausführen können, über ParallelizableAttribute - Ich frage mich: Ist es sicher, dass die statischen Verweis auf den aktuellen Test Kontext zu benutzen? Gibt es irgendwelche Sicherheitsbedenken, über die ich hier besorgt sein sollte? Gibt es einen besseren/robusteren Weg, das Testergebnis zu erhalten, ohne auf eine statische Referenz zurückgreifen zu müssen?

Ich benutze NUnit Framework 3.7.1 für den Fall, dass es darauf ankommt.

Antwort

1

Kurze Antwort: Ja.

Mittlere Antwort: Obwohl es sich um eine statische Eigenschaft handelt, verwenden wir sie nur für den einfachen Zugriff auf den tatsächlichen Kontext, der für jeden Test einzigartig ist.

Erläuterung: Jede Verwendung von TestContext.CurrentContext erstellt einen neuen Kontext, der keine teure Operation ist, da es nur ein Wrapper für TestExecutionContext.CurrentContext ist. Der aktuelle Ausführungskontext wird je nach Plattformaufbau des Nunit-Frameworks unterschiedlich gepflegt. Für Desktop .NET verwenden wir das CallContext, um es zu speichern.

Verwandte Themen