首页新闻找找看学习计划

求:MS UnitTest中,ExpectedException影响代码覆盖率的改进办法

0
悬赏园豆:100 [已解决问题] 解决于 2017-04-27 16:38

求: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%)

编码半辈子的主页 编码半辈子 | 初学一级 | 园豆:34
提问于:2017-03-28 23:55
< >
分享
最佳答案
1

最后加个Assert.Fail("....")呢?

ps下,追求代码覆盖率这些没啥意义,当然那些bt的公司非要追求单元测试代码覆盖率达到多少除外

收获园豆:100
Daniel Cai | 专家六级 |园豆:10374 | 2017-03-29 10:00

Assert.Fail()的方式我已经试过,并不能提高代码覆盖率,反而会跟try...catch一样,会降低覆盖率。
我也是个人希望能有解决办法,我是个追求完美的人。对代码的追求更是比较极致,非常感谢你的建议。

编码半辈子 | 园豆:34 (初学一级) | 2017-03-30 00:02

@杨璞: 这种玩意看看就好了,这个数字到了100%不代表不出问题,如果过于纠结这种东西是没太大意义的。

Daniel Cai | 园豆:10374 (专家六级) | 2017-03-30 09:13

支持下,代码覆盖率只是一个角度。。

参考:

http://www.cnblogs.com/coderzh/archive/2009/03/29/1424344.html

qingYun | 园豆:43 (初学一级) | 2017-03-31 15:56
其他回答(1)
0

经查阅《单元测试的艺术》一书。覆盖率针对的是被测试代码,而不是单元测试代码本身。而覆盖率达到100%也不代表业务逻辑100%正确。

编码半辈子 | 园豆:34 (初学一级) | 2017-04-27 16:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册