18

我正在使用 EclEmma 来测试我的项目的场景测试和用例测试的覆盖率。我有一个 Base 包,其中包含最通用的类​​和用例测试。覆盖范围如下所示:

我们项目中的代码覆盖率

我想要的是从覆盖率计算中排除用例测试(例如 BugReportTest)。但我确实希望考虑其中的测试。我知道如何从覆盖范围中排除整个类,但如果我这样做,我的覆盖率百分比会下降,因为检查我的代码的哪些行被测试的实际测试被遗忘了。由于隐私原因,这些用例测试确实需要保留在 Base 包中。

4

1 回答 1

17

由于技术原因,可能有必要从代码覆盖率分析中排除某些类。以下选项将覆盖代理配置为从分析中排除某些类。除了性能优化或技术极端情况外,通常不需要这些选项。

  1. 排除:应从执行分析中排除的类名列表。列表条目由 a 分隔colon (:) ,可以使用wildcard characters (* and ?). (Default: empty)

  2. 排除类加载器:应从执行分析中排除的类加载器名称列表。列表条目由 a 分隔,colon (:)并且可以使用wildcard characters (* and ?). 如果特殊框架与 JaCoCo 代码检测发生冲突,尤其是无法访问 Java 运行时类的类加载器,则可能需要此选项。(Default: sun.reflect.DelegatingClassLoader)

警告:谨慎使用这些选项!无效条目可能会破坏代码覆盖率启动器。也不要使用这些选项来定义分析范围。排除的课程仍将显示为未涵盖。

资源链接:

  1. EclEmma 代码覆盖首选项

以下示例都指定了相同的包含/排除模式集:

  1. <filter includes="com.foo.*" excludes="com.foo.test.*, com.foo.*Test*" />
  2. <filter includes="com.foo.*" /> <filter excludes="com.foo.test.*, com.foo.*Test*" />
  3. <filter value="+com.foo.*, -com.foo.test.*, -com.foo.*Test*" />
    <filter excludes="com.foo.*Test*" file="myfilters.txt" />
    其中 myfilters.txt 文件包含以下行:

    -com.foo.test.* +com.foo.*

资源链接:

  1. 覆盖过滤器
  2. 我确信我所有的类都是用 -g(debug='true') 构建的,但 EMMA 仍然抱怨缺少调试信息!

忽略 EclEmma 中单元测试的代码覆盖率

Preferences->Java->Code Coverage并将"Only path entries matching"选项设置为src/main/java- 似乎工作得很好

于 2016-05-07T16:33:49.847 回答