我有多个参数的方法,只要任何参数为空,就通过抛出 ArgumentNullExceptions 和 ArgumentExceptions 来防止输入错误。
所以有两种明显的方法来测试这个:
- 使用 [ExpectedException] 属性对每个参数进行一次测试
- 使用多个 try{} 捕获块对所有参数进行一项测试
try catch 看起来像这样:
try
{
controller.Foo(null, new SecondParameter());
Assert.Fail("ArgumentNullException wasn't thrown");
} catch (ArgumentNullException)
{}
有一个小问题。如果测试通过,Assert.Fail 永远不会被调用,因此将突出显示为未覆盖的测试代码(由 NCover)。
我知道这实际上不是问题,因为它是我想要 100% 覆盖的业务代码,而不是测试代码。我仍然很好奇是否有一种方法可以将多个抛出异常的调用压缩到一个测试用例中而不会有死的 LoC?