80 Stimmen

Ausnahmemeldungen bei Unit-Tests mit xUnit

Ich bin gerade dabei, meine MsTest-Unit-Tests in xUnit zu konvertieren. Gibt es mit xUnit eine Möglichkeit, Ausnahmemeldungen zu testen? Ist es korrekt, Ausnahmemeldungen zu testen, anstatt nur den Ausnahmetyp?

0voto

NerdFury Punkte 18121

XUnit verwendet Assert.Throws, um auf Ausnahmetypen zu testen. Sie können die Ausnahme abfangen und bei Bedarf eine Assert gegen die Nachricht durchführen. Ich denke, im Allgemeinen möchten Sie testen, dass die erwartete Ausnahme ausgelöst wird, und die genaue Nachricht ist wirklich nicht notwendig.

Assert.Throws<ArgumentNullException>()

Die Ausnahme könnte sein, wenn Sie eine benutzerdefinierte Ausnahme haben, die Sie in der Einheit testen, und Sie wollen sicherstellen, dass die erzeugte Nachricht das ist, was Sie erwarten. Oder wenn es zwei Möglichkeiten gibt, wie derselbe Ausnahmetyp ausgelöst werden kann, aber mit unterschiedlichen Meldungen, dann wäre eine Überprüfung der Meldung nützlich

0voto

Nico Degraef Punkte 105

In Anbetracht der Asynchronität würde die neue Version lauten

var ex = await Record.ExceptionAsync(() => myMethod(myParams));
Assert.IsType<SomeException>(ex);
Assert.Equal("My text of the error.", ex.Message);

-1voto

Csaba Toth Punkte 8952

Auf der xUnit-Website wird auch das Konstrukt "Record.Exception" erwähnt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X