【发布时间】:2014-06-06 21:31:00
【问题描述】:
在C# 中,您可以像这样在默认测试套件中捕获异常:
[TestMethod]
[ExpectedException(typeof (ArgumentNullException))]
public void TestNullComposite()
{
IApi api = new Api();
api.GetDataUsingDataContract(null); // this method throws ArgumentNullException
}
但是当你分析代码覆盖率时,它说你只得到了 66.67% 的覆盖率,因为最后一个花括号没有被覆盖。
我将如何在此单元测试中实现 100% 的覆盖率?
【问题讨论】:
-
您应该分析测试覆盖的代码百分比。不自己测试(我什至不明白你的测试涵盖了什么)
-
还请记住,行级别的覆盖率不是一个很好的指标,也不是重点。关键是,真正糟糕的事情发生的剩余风险是什么?
-
这是否意味着,您有 UnitTests#2 来测试其他 UnitTests#1 并获得对这些 UnitTests#1 的 100% 覆盖?然后是另一组 UnitTests#3 以获得 100% 的 UnitTests#2 覆盖率?来吧...单元测试应该足够简单以至于它不需要测试本身。如果不是,那你就做错了。
-
听起来编码标准与测试标准相矛盾。这只能通过使两者在同一地点和时间重合,从而导致相互湮灭或进一步的一系列会议,以更糟的为准来解决。
-
好的,我理解所有认为 100% 测试代码覆盖率是愚蠢的火焰 - 但我个人认为大括号是你和 100% 测试代码覆盖率之间唯一存在的东西是愚蠢的。跨度>
标签: c# unit-testing