wake-up-neo.com

Test ohne erwartete Ausnahme

Ich möchte einen NUnit-Test erstellen, um sicherzustellen, dass meine Funktion keine Ausnahme auslöst. Gibt es einen bestimmten Weg, oder sollte ich einfach schreiben?

[Test]
public void noExceptionTest() {
  testedFunction();
}

und es wird gelingen, wenn keine Ausnahme geworfen wird?

60
Yury Pogrebnyak
Assert.DoesNotThrow(() => { /* custom code block here*/});

ODER einfach Methode

Assert.DoesNotThrow(() => CallMymethod());

Weitere Informationen finden Sie unter NUnit Exception Asserts

97
sll

Unter Verwendung von NUnit 3.0 Constraint Model type assertions würde der Code folgendermaßen aussehen:

Assert.That(() => SomeMethod(actual), Throws.Nothing);

Dieses Beispiel stammt aus NUnit-Wiki .

25
Schneider

Eine Ausnahme nicht auszulösen ist die normale Vorgehensweise. Ihr Test überprüft erfolgreich, dass keine Ausnahme ausgelöst wird.

6
dasblinkenlight

Du hast Recht. Wenn es eine Ausnahme gibt, schlägt der Test fehl.

Es sei denn, Sie geben an

[ExpectedException( typeof(YourException) ) ]
public void TestMethod()
{ 
   ...
}

Oder wie @sll sagt, verwenden Sie die spezifischeren

Assert.DoesNotThrow

Behauptung .

2
Phil

Ja, keine Ausnahmen geworfen -> Test bestanden. Wenn es einen Try-Catch-Block gab, der nicht erneut geworfen wurde, geht er auch vorbei.

1
Anton

Ich denke, es gibt ein Problem im Zusammenhang mit der Unit-Test-Logik. Wenn Sie unter bestimmten Eingaben eine bestimmte Ausnahme erwarten, deklarieren Sie diese als erwartete Ausnahme. Wenn Sie nur überprüfen, ob sich Ihre Funktion ordnungsgemäß verhält und bei diesem ordnungsgemäßen Verhalten keine Ausnahmen zu erwarten sind, schreiben Sie sie einfach und wenn sie eine Ausnahme auslöst, schlägt Ihr Test fehl.

Ihr Code scheint auf der anderen Seite einwandfrei zu funktionieren, nur wenn Sie keine Ausnahmen überprüfen, ist dies möglicherweise nicht der richtige Weg für den Komponententest. In Komponententests erwarten Sie im Allgemeinen einige Ergebnisse (erwartete Werte), Sie haben einige tatsächliche Ergebnisse (tatsächliche Werte) und Sie behaupten, dass erwartete und tatsächliche Werte gleich sind.

1
daryal