Ich habe festgestellt, dass dies die beiden Hauptmethoden zum Testen auf Ausnahmen zu sein scheinen:
Assert.Throws<Exception>(()=>MethodThatThrows());
[ExpectedException(typeof(Exception))]
Welches davon wäre das Beste? Bietet einer Vorteile gegenüber dem anderen? Oder ist es einfach eine Frage der persönlichen Präferenz?
Assert.That(() => MethodThatThrows(), Throws.Exception)
ExpectedException
Attribut nicht mehr , sodass für Version 3+ nur dieAssert.Throws
Variante relevant ist.Antworten:
Mit dem ersten können Sie mit mehreren Aufrufen auf mehr als eine Ausnahme testen:
Mit der zweiten können Sie nur eine Ausnahme pro Testfunktion testen.
quelle
Assert.Throws
.Der Hauptunterschied ist:
ExpectedException()
Das Attribut lässt den Test bestehen, wenn an einer beliebigen Stelle in der Testmethode eine Ausnahme auftritt .Durch die Verwendung von
Assert.Throws()
können Sie denexact
Ort des Codes angeben , an dem eine Ausnahme erwartet wird.NUnit 3.0 lässt die offizielle Unterstützung für
ExpectedException
insgesamt fallen.Daher bevorzuge ich definitiv die Verwendung einer
Assert.Throws()
Methode anstelle einesExpectedException()
Attributs.quelle
Ich bevorzuge assert.throws, da ich damit andere Bedingungen überprüfen und bestätigen kann, nachdem die Ausnahme ausgelöst wurde.
quelle
Sie können den erwarteten Fehler auch stark eingeben (wie die alte Attributversion).
quelle
Wenn Sie eine ältere Version ( <= 2.0 ) von verwenden
NUnit
, müssen Sie diese verwendenExpectedException
.Wenn Sie eine Version 2.5 oder höher verwenden, können Sie diese verwenden
Assert.Throw()
https://github.com/nunit/docs/wiki/Breaking-Changes
Verwendung: https://www.nunit.org/index.php?p=exceptionAsserts&r=2.5
quelle