2016-04-19 10 views

Antwort

0

Ich konnte dies erreichen, wie folgt ....

using NUnit.Framework.Internal; 
using NUnit.Framework.Internal.Commands; 
using NUnit.Framework.Internal.Execution; 

TestActionCommand command = new TestActionCommand(CommandBuilder.MakeTestCommand(TestExecutionContext.CurrentContext.CurrentTest as TestMethod)); 
command.Execute(TestExecutionContext.CurrentContext); 
+0

Während dies im aktuellen Build funktionieren sollte, teilt es den Nachteil der ursprünglichen Lösung, nämlich dass es interne Klassen verwendet, die sich in Zukunft ändern können. Das heißt, es ist zumindest für eine Weile ziemlich sicher. :-) – Charlie

0

Wenn Sie versuchen, Ihre Tests erneut auszuführen, weil sie gelegentlich aufgrund von vorübergehenden Netzwerkfehlern oder ähnlichem fehlschlagen, hat NUnit 3.x ein Retry-Attribut eingeführt, das eine bestimmte Anzahl von Versuchen wiederholt.

+0

Danke. Ist es möglich, den Wiederholungszähler in einer Setup-Methode für zB? – quldude

+0

Nein, der Wiederholungszähler ist ein festgelegter max. Ich würde einfach versuchen, eine passende Nummer für Ihre Situation zu finden. –

+0

Gibt es eine Möglichkeit, den Test wie in 2.6.4 noch einmal auszuführen? Der Grund dafür ist, dass ich den Wiederholungszähler als Eingabeparameter habe. – quldude

0

Der einzige Weg, ich denken kann, wie dies in NUnit 3.x getan werden könnte, um den Testcode Verpackung, die den Ausfall verursachen kann in einer Schleife und setzen Sie einen Versuch catch Block innerhalb der Schleife, die gerade im catch-Block weiter.

Sie können einen Wiederholungszähler-Parameter übergeben und ihn nur in der Schleife zählen und den Test dann abbrechen, sobald Sie die maximale Anzahl von Wiederholungen erreicht haben.

0

Ich fürchte, dass das, was Sie in NUnit 2.6.4 getan haben, keine unterstützte Testmethode war. Es funktionierte nur aufgrund der Verwendung einer Reihe von internen Klassen. Ich schlage vor, die veröffentlichten APIs zu verwenden und Funktionen dort anzufordern, wo Sie sie benötigen, anstatt interne Klassen und Methoden zu verwenden, die sich in der Zukunft beliebig ändern können.

+0

Können Sie mir ein Beispiel dafür geben, wie Sie dies mithilfe der APIs tun können? – quldude

+0

Sehen Sie hier: https://github.com/nunit/dev/wiki/Test-Engine-API – Charlie

+0

Ich habe die TestEngine verwendet, um den Test durchzuführen. Dies läuft auf einmalige Setup-, Setup-, Test-, Teardown- und On-Time-Teardown-Methoden. Aber gibt es eine Möglichkeit, nur Setup-, Test- und Teardown-Methoden auszuführen? – quldude