【问题标题】:Why is a method call shown as not covered when the code within the method is covered with emma?当方法中的代码被 emma 覆盖时,为什么方法调用显示为未覆盖?
【发布时间】:2008-09-11 12:05:25
【问题描述】:

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

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

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

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

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

例如

public methodA(){

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

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

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

【问题讨论】:

  • methodB是否正常返回?

标签: unit-testing junit code-coverage emma


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    那么,methodB() 是否可能在其他地方被另一个单元测试或 methodC() 调用?

    【讨论】:

      猜你喜欢
      • 2016-03-07
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多