У меня бывают случаи, когда мне все равно, какое исключение выбрасывается (до тех пор, пока генерируется какое-то исключение). К сожалению,
Assert.Throws<Exception>(someDelegate);
не проходит, пока не будет сгенерирован именно экземпляр Exception
(то есть не экземпляр производного класса). Я знаю, что могу добиться желаемого поведения с помощью
Exception exception = Record.Exception(someDelegate);
Assert.NotNull(exception);
, но он читается неправильно. Не хватает ли мне чего-то в xUnit, которое имеет нужное мне поведение? Вот два теста, которые показывают, что я имею в виду:
[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(); }
);
}