请考虑以下代码:
public interface IConverter
{
}
public class ConverterFactory
{
public IConverter GetConverter()
{
throw new ArgumentException();
}
}
[TestClass]
public class ConverterFactoryTests
{
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void GetConverterShouldThrowExceptionWhenConverterNotRegistered()
{
var factory = new ConverterFactory();
factory.GetConverter();
}
}
为什么代码覆盖率报告测试方法不是100%覆盖?
解答:
不包括结束花括号,因为代码将始终抛出异常并且永远不会到达方法的末尾。
How do I obtain 100% coverage when an exception is thrown in a unit test?
因此,为了获得100%的覆盖率,您需要排除检查异常的测试方法。烦。
EDIT1:删除了不相关的流畅断言。 EDIT2:删除了不相关的泛型。
答案 0 :(得分:2)
不包括结束花括号,因为代码将始终抛出异常并且永远不会到达方法的末尾。
How do I obtain 100% coverage when an exception is thrown in a unit test?
因此,为了获得100%的覆盖率,您需要排除检查异常的测试方法。烦。
答案 1 :(得分:0)
将代码转换为如下所示,当然如果它是一行。
public IConverter GetConverter() throw new ArgumentException();