Skip to main content
 首页 » 编程设计

unit-testing之单元测试代码覆盖率之你的覆盖率达到 100% 吗

2024年06月20日13leader

您的单元测试是否构成 100% 的代码覆盖率?是或否,以及为什么或为什么不。

请您参考如下方法:

没有,有几个原因:

  • 与 90% 或 95% 的覆盖率相比,实现 100% 的覆盖率确实要付出不明显的代价。
  • 即使覆盖率达到 100%,您的代码也完美。看看这个方法(事实上,这取决于您所讨论的覆盖类型 - 分支覆盖行覆盖...):


public static String foo(boolean someCondition) { 
    String bar = null; 
    if (someCondition) { 
        bar = "blabla"; 
    } 
    return bar.trim(); 
} 

和单元测试:

assertEquals("blabla", foo(true)); 

测试将会成功,并且您的代码覆盖率为 100%。但是,如果您添加另一个测试:

assertEquals("blabla", foo(false)); 

然后你会得到一个NullPointerException。由于第一个测试你的成绩是 100%,你不一定会写第二个测试!

一般来说,我认为关键代码的覆盖率必须接近100%,而其他代码的覆盖率可以达到85-90%