当方法中的代码被艾玛(Emma)覆盖时,为什么方法调用显示为未覆盖?
时间:2020-03-05 18:51:23 来源:igfitidea点击:
我正在编写一个单元测试,以检查私有方法是否将关闭流。
单元测试调用methodB,并且变量something为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插件的问题)。