当方法中的代码被艾玛(Emma)覆盖时,为什么方法调用显示为未覆盖?

时间:2020-03-05 18:51:23  来源:igfitidea点击:

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

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

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

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

在eclipse中使用emma(通过eclemma插件),即使方法中的代码是

例如

public methodA(){

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

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

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

解决方案

回答

我假设当我们说"单元测试调用methodB()"时,意思不是直接通过methodA()

那么,是否可能通过其他单元测试或者" methodC()"在其他地方调用" methodB()"?

回答

我发现EMMA的eclipse插件有很多bug,并且与我们描述的插件有相似的经验。最好单独使用EMMA(如果需要,可以通过ANT)。确保始终重新生成EMMA生成的元数据文件,以避免合并混乱(我怀疑这是eclipse插件的问题)。