100%的代码覆盖率是否意味着代码是正确的?

Abs*_*802 0 tdd unit-testing

如果你有 100% 的测试覆盖率并且所有测试都通过,这是否意味着代码保证是正确的并且编写更多的测试是没有意义的?

小智 7

仅当您的测试逻辑正确时,它才是正确的。

我会举一个最愚蠢的例子......

例如,如果我有一个类(Java):

public class Example {

    public int timesTwo(int x){
        return x*2;
    }

}
Run Code Online (Sandbox Code Playgroud)

通过以下测试(您可以看到它不合逻辑且无用)

public class ExampleTest {

    @Test
    public void timesTwo() {
        new Example().timesTwo(5);
        assertTrue(true);
    }
    
}
Run Code Online (Sandbox Code Playgroud)

大多数覆盖率工具都会说这个类已经过 100% 的测试!所以不,覆盖率是需要测试什么的一个很好的指标;但测试逻辑本身并不确定。