どの例外がスローされるかを気にしない場合があります (何らかの例外がスローされる限り)。不運にも、
Assert.Throws<Exception>(someDelegate);
Exception
のインスタンス(派生クラスのインスタンスではない) がスローされない限り、合格しません。私は私が望む行動を得ることができることを知っています
Exception exception = Record.Exception(someDelegate);
Assert.NotNull(exception);
しかし、それは正しく読みません。必要な動作をする xUnit に欠けているものはありますか? 私が言いたいことを示す2つのテストを次に示します。
[Fact]
public void Throws_exception_and_passes() {
Exception exception = Record.Exception(
() => { throw new InvalidOperationException(); }
);
Assert.NotNull(exception);
}
[Fact]
public void Throws_exception_and_fails() {
Assert.Throws<Exception>(
() => { throw new InvalidOperationException(); }
);
}