2016-09-08 1 views
1

Ich benutze NUnit und TeamCity, um meine Tests durchzuführen.NUnit-Tests fehlgeschlagen beim SetUp werden in TeamCity nicht angezeigt

Bei einigen Tests (nicht alle) wurden Aktionen im Testklassenkonstruktor ausgeführt. Ich nenne diese Aktionen "Pre-Actioins" für Validierungen. In einer Testklasse habe ich zum Beispiel 5 Validierungen (Tests) und eine Reihe von Voraktionen.

Ich bemerkte, dass wenn eine Reihe von Tests auf der Bühne vorge Aktionen schlägt fehl, wenn dann Teamcity Ausführung nicht diese Tests in seinem Bericht überhaupt nicht angezeigt werden (unter keinem Status).

In Buildprotokoll sehe ich Fehler wie:

SetUp Error : {test_name} + error code. 

Was ich von Teamcity erwarten diese Tests zumindest zu berichten ist als Ignoriert.

Um zu vergleichen, laufenden Tests mit TeamCity mit laufenden Tests mit Visual Studio in Visual Studio das Ergebnis der gleichen Fehlerbedingung wird Fehler für alle Testsuite. Der Fehler ist bei allen Tests gleich.

Also was ich will, ist nur zu wissen, wenn einige meiner Tests überhaupt nicht ausgeführt wurden, denn wenn TeamCity dann nicht in Testergebnissen enthält dann weiß ich nicht einmal über Probleme!

Konfig: TeamCity 10.0, NUnit 3.0.

Befehlszeilen params:--result=TestResult.xml --workers=4 --teamcity

Update: Ergebnisse von Tests in Protokoll Ausführung wie folgt aussehen:

[13:03:48][Step 1/1] Test Run Summary 
[13:03:48][Step 1/1]  Overall result: Failed 
[13:03:48][Step 1/1] Tests run: 82, Passed: 0, Errors: 82, Failures: 0, Inconclusive: 0 
[13:03:48][Step 1/1]  Not run: 0, Invalid: 0, Ignored: 0, Explicit: 0, Skipped: 0 
[13:03:48][Step 1/1] Start time: 2016-09-08 09:56:33Z 
[13:03:48][Step 1/1]  End time: 2016-09-08 10:03:48Z 
[13:03:48][Step 1/1]  Duration: 434,948 seconds 

So solche Tests NUnit Marken auch nicht als gescheitert, sondern als "erros". Noch will ich sie in Testergebnissen.

Antwort

1

Ihre Tests sind Fehler, weil Sie eine Ausnahme im Konstruktor werfen. Da die Testvorrichtung nicht konstruiert werden kann, wird der Test nicht wirklich ausgeführt, was NUnit betrifft. Die Tatsache, dass es ein NUnit-Assertionsfehler ist, der die Ausnahme verursacht, ist im Zusammenhang mit dem Konstruieren des Objekts irrelevant.

Wir haben den Leuten immer geraten, ihre Konstruktoren sehr einfach zu halten, da NUnit keine Garantien gibt, wann und wie oft Ihr Objekt konstruiert wird. Die Verwendung von Assertionen im Konstruktor ist eine extreme Verletzung dieses Principals, und tatsächlich habe ich noch nie jemanden zuvor gesehen.

Das OneTimeSetUp Attribut ist es, wenn Sie etwas, was wollen jedes Mal passieren Ihr Test ist Lauf zu gebaut gegenüber. NUnit garantiert, wann diese Methode ausgeführt wird. :-)

Nichts davon sagt mir sicher, warum TC den Fehler nicht erkennt, aber ich schätze, es ist, weil einmal der Konstruktor fehlschlägt, die Tests nie tatsächlich ausgeführt werden. NUnit selbst gleicht dies aus, indem es die Tests als Fehler meldet, aber TC würde das nicht notwendigerweise tun.

Verwandte Themen