C# xUnitでのユニットテストで例外をスローする方法


  1. Assert.Throwsメソッドを使用する方法:
[Fact]
public void TestMethod()
{
    Assert.Throws<Exception>(() =>
    {
        // ここに例外がスローされる可能性のあるコードを記述する
    });
}

上記の例では、Assert.Throws<Exception>メソッドを使用して、指定した型の例外がスローされることを確認しています。

  1. ExpectedException属性を使用する方法:
[Fact]
[ExpectedException(typeof(Exception))]
public void TestMethod()
{
    // ここに例外がスローされる可能性のあるコードを記述する
}

上記の例では、ExpectedException属性を使用して、指定した型の例外がスローされることを宣言しています。

  1. 式木を使用して例外をキャッチする方法:
[Fact]
public void TestMethod()
{
    try
    {
        // ここに例外がスローされる可能性のあるコードを記述する
        // 例外がスローされた場合、catchブロックで処理されます
    }
    catch (Exception ex)
    {
        // 例外がスローされたことを検証するためのアサーションを記述する
        Assert.NotNull(ex);
    }
}

上記の例では、try-catchブロックを使用して例外をキャッチし、アサーションを使用して例外がスローされたことを検証しています。

これらはいくつかの一般的な方法ですが、他にもさまざまな方法があります。ユニットテストには、アプリケーションの要件やテストケースに応じて最適な方法を選択する必要があります。