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.
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 ;)
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
Gute Lösung. Werd ich mir angewöhnen.