作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我想测试一个方法是否抛出特定类型的异常,NUnit 的 ExpectedException 属性不关心实际类型;如果我在方法调用之前抛出一个通用异常,则测试通过:
[Test, ExpectedException(typeof(TestCustomException))]
public void FirstOnEmptyEnumerable()
{
throw new Exception(); // with this, the test should fail, but it doesn't
this.emptyEnumerable.First(new TestCustomException());
}
如果我想检查测试是否抛出确切的异常类型,我必须像这样手动执行一些操作:
[Test]
public void FirstOnEmptyEnumerable()
{
try
{
throw new Exception(); // now the test fails correctly.
this.emptyEnumerable.First(new TestCustomException());
}
catch (TestCustomException)
{
return;
}
Assert.Fail("Exception not thrown.");
}
我错过了什么吗?
最佳答案
我从来没有使用过 ExpectedException,所以我没有任何经验可以分享。一个选项是断言它直接在测试中抛出。像这样:
[Test]
public void FirstOnEmptyEnumerable()
{
Assert.Throws<TestCustomException>(() => this.emptyEnumerable.First(new TestCustomException()));
}
我发现这种方法更具可读性,因为您可以准确地在预期异常发生的位置测试异常,而不是说“我在这个函数的某个地方抛出异常”。
关于c# - NUnit 的 TestCustomException 不关心异常类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3957151/
我一直在学习如何创建自定义 ArrayAdapter 并熟悉重写 ArrayAdapter 的 getViewTypeCount 和 getItemViewType 方法。 为什么 Android V
我是一名优秀的程序员,十分优秀!