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?
Antworten
Zu viele Anzeigen?Besser ist es, die Methode Record.Exception zu verwenden, da sie dem AAA-Muster entspricht:
[Fact]
public void Divide_TwoNumbers_ExpectException()
{
var sut = new Calculator();
var exception = Record.Exception(() => sut.Divide(10, 0));
Assert.IsType(typeof(DivideByZeroException), exception);
}
Ich hoffe, das hilft ...
Eine Ausnahme ist nicht anders als jedes andere erwartete Ergebnis Ihres Tests. Es ist selbstverständlich, zu prüfen, ob die Meldung die richtige ist, da zwei verschiedene Meldungen denselben Ausnahmetyp haben können. Ich persönlich halte dies jedoch nicht für zwingend erforderlich, zumindest nicht bei allen Ausnahmen.
In unserem Projekt ist jeder Anwendungsausnahme auch ein 'Message'-Objekt angehängt, also überprüfen wir die MessageId wird nicht überprüft, ob die Argumente der Nachricht richtig sind oder ob der Text der Nachricht korrekt ist. Lautet der Nachrichtentext z. B. "Falscher Parameter <{0}> wurde übergeben", wird nicht überprüft, ob das Argument, das an das Format {0} übergeben wurde, den Erwartungen entspricht - dies ist nicht beabsichtigt. Die Nachricht hat eine eindeutige ID - wir überprüfen also, ob die MessageID der Ausnahme ist 'WRONG_PARAMETER_PROVIDED'.
- See previous answers
- Weitere Antworten anzeigen