jas*_*son 13 .net c# assert xunit
我有些情况下我不关心抛出什么异常(只要抛出一些异常).不幸,
Assert.Throws<Exception>(someDelegate);
Run Code Online (Sandbox Code Playgroud)
除非完全Exception抛出一个(因此不是派生类的实例)的实例,否则不会通过.我知道我可以获得我想要的行为
Exception exception = Record.Exception(someDelegate);
Assert.NotNull(exception);
Run Code Online (Sandbox Code Playgroud)
但它没有正确的解读.我是否在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(); }
);
}
Run Code Online (Sandbox Code Playgroud)
根据这里的文档:
http://xunit.codeplex.com/wikipage?title=HowToUse&referringTitle=Home
您必须指定要抛出的异常类型.一般来说,这是一种很好的做法.您应该能够预测测试会引发什么类型的异常.您应该能够以允许您预测此方法的方式设计方法和测试.
有很多方法可以解决这个问题,比如试一试自己,但是你应该考虑改变你的设计.
它在这个问题时并不存在,但现在可以Assert.ThrowsAny<Exception>用来测试任何派生的异常Exception(因此任何异常),以及Assert.ThrowsAny<ArgumentException>测试任何派生的异常等变体ArgumentException.
| 归档时间: |
|
| 查看次数: |
6412 次 |
| 最近记录: |