当emma覆盖方法中的代码时,为什么方法调用显示为未覆盖?

时间:2008-09-11 12:05:25

标签: unit-testing junit code-coverage emma

我正在编写单元测试以检查私有方法是否会关闭流。

单元测试调用methodB,变量some​​为null

单元测试不会在测试中模拟类

私有方法属于我正在调用的公共方法。

在eclipse中使用emma(通过eclemma插件),方法调用显示为未被覆盖,即使方法中的代码是

e.g

public methodA(){

    if (something==null) {
        methodB(); //Not displayed as covered
    }
}

private methodB(){
    lineCoveredByTest; //displayed as covered
}

为什么方法调用不会被突出显示为被覆盖?

2 个答案:

答案 0 :(得分:2)

我发现EMMA的eclipse插件非常错误,并且与你描述的那个有过类似的经历。最好只使用EMMA(如果需要,通过ANT)。确保您始终重新生成EMMA生成的元数据文件,以避免合并混淆(我怀疑这是eclipse插件的问题)。

答案 1 :(得分:0)

我假设当您说'单元测试呼叫methodB()'时,您的意思并非直接并且通过methodA()

那么,是否可能通过其他单元测试或methodB()来调用methodC()