求:MS UnitTest中,ExpectedException影响代码覆盖率的改进办法
如题,我在测试代码中使用了ExpectedException特性(Attribute),测试能通过,但代码覆盖率会受到影响,我希望能达到100%的代码覆盖率,请问怎么解决。
public static class MyClass { /// <summary> /// 被测试方法 /// </summary> public static void SayHello() { throw new ArgumentException("test message"); } } [TestClass] public class MyClassTests { /// <summary> /// 测试代码 /// 在此,我希望方法得到正确执行时,期望抛出异常为ArgumentException,这个测试是可以通过的。 /// 但这种写法会影响代码覆盖率,我希望能有改进的办法,请大神指点,谢谢 /// </summary> [TestMethod] [ExpectedException(typeof(ArgumentException), "test message")] public void SayHello_Successful_ArgumentExceptionThrow() { MyClass.SayHello(); } }
代码覆盖率结果如下图(我希望代码覆盖率能达到100%)
最后加个Assert.Fail("....")呢?
ps下,追求代码覆盖率这些没啥意义,当然那些bt的公司非要追求单元测试代码覆盖率达到多少除外
Assert.Fail()的方式我已经试过,并不能提高代码覆盖率,反而会跟try...catch一样,会降低覆盖率。
我也是个人希望能有解决办法,我是个追求完美的人。对代码的追求更是比较极致,非常感谢你的建议。
@杨璞: 这种玩意看看就好了,这个数字到了100%不代表不出问题,如果过于纠结这种东西是没太大意义的。
支持下,代码覆盖率只是一个角度。。
参考:
http://www.cnblogs.com/coderzh/archive/2009/03/29/1424344.html
经查阅《单元测试的艺术》一书。覆盖率针对的是被测试代码,而不是单元测试代码本身。而覆盖率达到100%也不代表业务逻辑100%正确。