Ich möchte, dass meine TearDown-Methode prüft, ob der vorherige Test erfolgreich war, bevor eine Logik angewendet wird. Gibt es einen einfachen Weg, dies zu tun?NUnit - Ist es möglich, im TearDown nachzusehen, ob der Test erfolgreich war?
Antwort
klingt wie eine gefährliche Idee, es sei denn es ist ein Integrationstest, mit sagen, Daten zu entfernen sagen. Warum nicht im Test selbst machen?
Offensichtlich könnte eine private Flagge in der Klasse gesetzt werden.
Dies ist, was Charlie Poole sich has suggested, wenn Sie müssen
Nur wenn Sie dies manuell tun. Tatsächlich wissen Sie sogar nicht, welche Tests ausgeführt werden sollen. In NUnit IDE kann man einige Tests aktivieren und andere deaktivieren. Wenn Sie, wenn einige spezifische Tests umfassen könnten Sie hat laufen wissen wollen, Code wie folgt in Ihrer Testklasse:
enum TestStateEnum { DISABLED, FAILED, SUCCEDED };
TestStateEnum test1State = TestStateEnum.DISABLED;
[Test]
void Test1()
{
test1State = TestStateEnum.FAILED; // On the beginning of your test
...
test1State = TestStateEnum.SUCCEDED; // On the End of your Test
}
Dann können Sie die test1State Variablen überprüfen. Wenn der Test eine Ausnahme auslöst, wird das SUCCEDED nicht gesetzt. Sie können dies auch endlich in einem Try-Catch setzen mit einer etwas anderen Logik in Ihren Tests blockieren:
[Test]
void Test1()
{
test1State = TestStateEnum.SUCCEDED; // On the beginning of your test
try
{
... // Your Test
}
catch(Exception)
{
test1State = TestStateEnum.FAILED;
throw; // Rethrows the Exception
}
}
Es ist nicht ein Versuch zu sagen, welcher Test ausgeführt wurde, nur ein anderer Fehler, den ich werfen möchte, so kann ich einen genaueren StackTrace erhalten –
IMHO Logik abreißen sollte das Testergebnisses unabhängig sein.
Im Idealfall sollten Sie Setup und Teardown vollständig vermeiden, ein al xunit.net. Weitere Informationen finden Sie unter here.
In der Regel sollten Sie das absolut tun. Jedoch halte ich meine Tests sauber und zusammenhängend mit einem BDD-Geschmack. Manchmal bedeutet das, dass man über lambdas Vorgaben und Behauptungen aufstellt und sie im TearDown ausführt. Das Problem ist, wenn aus irgendeinem Grund der Setup- oder Testkörper fehlgeschlagen ist, der Stacktrace verwirrend ist. –
Dies wurde bereits in Ran's answer zu ähnlichen SO Frage gelöst. Quoting Ran:
Seit Version 2.5.7 ermöglicht NUnit Teardown zu erkennen, wenn der letzte Test fehlgeschlagen ist. Eine neue TestContext-Klasse ermöglicht Tests, um auf Informationen über sich selbst einschließlich der TestStauts zuzugreifen.
Weitere Einzelheiten finden Sie in http://nunit.org/?p=releaseNotes&r=2.5.7
[TearDown]
public void TearDown()
{
if (TestContext.CurrentContext.Result.Status == TestStatus.Failed)
{
PerformCleanUpFromTest();
}
}
Danke für den Link. Bitte beachten Sie, dass diese Frage über eineinhalb Jahre vor Davids Antwort veröffentlicht wurde. –
In Nunit 3.x ist es 'if (TestContext.CurrentContext.Result.Outcome == ResultState.Failure)' – Lukas
Wenn Sie TearDown verwenden mögen Status des letzten Tests zum Nachweis mit NUnit 3.5 es sein sollte:
[TearDown]
public void TearDown()
{
if (TestContext.CurrentContext.Result.Outcome.Status.Equals(TestStatus.Failed))
{
//your code
}
}
- 1. Überprüfen, ob sp_send_dbmail erfolgreich war
- 2. NUnit Conditional Teardown?
- 3. NUnit Visual Studio Run TearDown auf Test abbrechen
- 4. müssen testen, ob SQL-Abfrage erfolgreich war
- 5. Wie zu überprüfen, ob IO.copy_stream erfolgreich war
- 6. Der Datenschutzvorgang war nicht erfolgreich
- 7. NUnit. Übergeben von Parametern in Teardown-Methode
- 8. Java-Mail. Wie überprüfe ich, ob der Login erfolgreich war?
- 9. So finden Sie, ob der Aufruf von unregister_chrdev() erfolgreich war
- 10. $ viewContentLoaded Überprüfen, ob es erfolgreich ist
- 11. NUnit Tests nicht im Test Explorer mit Nunit Test Adapter ist
- 12. Woher wissen Sie in NUnit TearDown, wenn ein Test eine Ausnahme ausgelöst hat und was diese Ausnahme war?
- 13. Unterstützt NUnit das Konzept einer Assembly Teardown?
- 14. Ist es möglich, die Testreihenfolge im Test zu bestimmen?
- 15. Überprüfen, ob window.history.go erfolgreich ist?
- 16. Globaler Test-Hook oder globaler Test-Teardown für jeden Test im Roboter-Framework
- 17. NUnit - Angeben einer Methode, die nach jedem Test aufgerufen wird
- 18. Rails 5 Test globale Einrichtung und Teardown
- 19. Testet, ob ein Ausführungs Block erfolgreich war oder nicht
- 20. Python Überprüfen, ob die String-Aufteilung erfolgreich war
- 21. Wie überprüft man, ob die Entschlüsselung erfolgreich war?
- 22. spymemcached: Wie kann ich feststellen, ob Memcached erfolgreich verbunden war?
- 23. Wie kann ich feststellen, ob ein BPM-Prozess erfolgreich war?
- 24. SubSonic3 Clearing-Test Daten/Datenbank im Komponententest TearDown Betrieb
- 25. .NET-NUnit-Test - Assembly.GetEntryAssembly() ist null
- 26. Überprüfen, ob ein nicht blockierender Sendevorgang erfolgreich war
- 27. Ist es möglich, das Attribut "Parallelizable" programmatisch von einem Test-Fixture in NUnit 3.0 zu entfernen?
- 28. Unix Shell Scripting - Überprüfen, ob eine Kopie erfolgreich war
- 29. Wie verifizieren Sie, ob adb connect erfolgreich war?
- 30. nunit Test Arbeitsverzeichnis
Das ist ärgerlich, hätte ich erwartet eine Art NUnit.CurrentTestContext API. Ich muss nur wissen, ob der Test erfolgreich war, da es zusätzliche Informationen gibt, die ich in diesem Gerät bereitstellen kann, wenn es fehlschlägt, was beim Debuggen helfen würde. –