web-dev-qa-db-ja.com

nUnit Assert.That(method、Throws.Exception)が例外をキャッチしていません

例外をチェックするこの単体テストが失敗する理由を誰かに教えてもらえますか?明らかに私の実際のテストは他のコードをチェックしていますが、問題を示すためにInt32.Parseを使用しています。

[Test]
public void MyTest()
{
    Assert.That(Int32.Parse("abc"), Throws.Exception.TypeOf<FormatException>());
}

テストは失敗し、このエラーが発生します。明らかに、私はこの例外をテストしようとしていますが、構文に何かが欠けていると思います。

Error   1   TestCase '.MyTest'
failed: System.FormatException : Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Int32.Parse(String s)

Throws Constraint(NUnit 2.5) のドキュメントに基づく

43
Jason More

どのテストランナーを使用していますか?それらのすべてが例外アサーションで正しく機能するわけではありません。

[ExpectedException (typeof(FormatException))]またはAssert.Throws<FormatException> (() => Int32.Parse("abc"));を使用すると運が良くなる可能性があります

9
ermau