如何从EclEmma中的覆盖率计算中排除类,而不实际将它们从覆盖范围本身中排除

Pro*_*994 11 java eclipse unit-testing code-coverage eclemma

我正在使用EclEmma来测试我的场景测试的覆盖率并在我的项目中使用案例测试.我有一个Base包,其中包含最常用的类和用例测试.报道如下:

我们项目中的代码覆盖率

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

Sky*_*ker 12

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

  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- 似乎很好地工作