1. ホーム
  2. c#

[解決済み] MSTestのユニットテストで「例外が発生しない」ことを確認するにはどうすればよいですか?

2023-01-19 03:18:39

質問内容

私は、"void"を返すこの1つのメソッドのユニットテストを書いています。 私は例外がスローされないときにテストが通過する1つのケースを持ちたいと思います。 C#でどのようにそれを書くのですか?

Assert.IsTrue(????)

(私の推測では、このようにチェックするべきだと思うのですが、"には何が入るのでしょうか?")

私の質問が十分に明確であることを望みます。

どのように解決するのですか?

例外が発生した場合、ユニットテストはいずれにせよ失敗します。

これはアサーションが全くないユニットテストを見ることができる数少ないシナリオの1つです - テストは例外が発生した場合、暗黙のうちに失敗します。

しかし、もしあなたが本当にこのためにアサーションを書きたいのであれば、おそらく例外をキャッチして "例外は発生しないと思っていたが、こうなった... " と報告できるようにするため、こうすることができます。

[Test]
public void TestNoExceptionIsThrownByMethodUnderTest()
{
    var myObject = new MyObject();

    try
    {
        myObject.MethodUnderTest();
    }
    catch (Exception ex)
    {
        Assert.Fail("Expected no exception, but got: " + ex.Message);
    }
}

(上記はNUnitの例ですが、MSTestでも同じことが言えます)