| 

.NET C# Java Javascript Exception

4
Gibt es eine Möglichkeit dafür zu sorgen, dass unter Microsoft Unit-Tests ein Test als "Failed" gekennzeichnet wird, wenn kein Assert in der Testmethode enthalten ist? Mir ist es schon passiert, dass ich vor lauter Begeisterung das Assert vergessen und mich gefreut habe, dass der Test schon grün ist.
01.02.2011
tboerner 509 8
2 Antworten
6
Hallo,
das Ganze würde eine statische Codeanalyse voraussetzen, was meiner Meinung nach derzeit nicht gemacht wird und mir ist auch keine Einstellung bekannt, was die von dir beschriebene Prüfung durchführen würde.

Trotzdem kann man das ganze recht (einfach) umgehen, die Klasse Assert bietet für soetwas die statische Methode Assert.Inconclusive um anzuzeigen, das der aktuelle Test unter diesen Bedingungen nicht ausgewertet werden kann.

Die Frage ist jetzt, wie du beim Erstellen von neuen Tests vorgehst? NUtzt du den Assistenten dazu? Kopierst du einfach andere Tests und änderst sie ab?
Ich habe mir ein Codesnippet gebaut was auf das Kürzel mstest reagiert und folgendes Template abbildet (vereinfacht, habe grad kein Zugriff auf mein VS):

[TestMethod]
public void TestTemplate()
{
Assert.Inconclusive("Assert is missing");
}


Dann muss man sich nur noch die Disziplin antrainieren, die Inconclusive-Zeile erst nach schreiben des Tests wegzumachen ;)

Gruß David
01.02.2011
DavidT 76 3
Ach dafür ist das. Ich hab mich gefragt, wofür der Assistent diese komische Zeile einfügt. :-)
Gute Lösung. Werd ich mir angewöhnen.
tboerner 01.02.2011
4
Ich weiß nicht ob es dir weiterhilft, aber ich hatte vor einiger Zeit mal folgendes Konstrukt genutzt:

[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void TestMethod()
{
Assert.Fail();
}

Würdest du diesen Test ausführen, würde er erfolgreich durchlaufen, lässt du Assert.Fail() weg, bekommst du einen Fehler. Evtl. kannst du das für deine Zwecke anpassen
01.02.2011
Konstantin 3,7k 8

Stelle deine Microsoft-Frage jetzt!