gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:31 24 4
gpt4 key购买 nike

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

Code coverage in our project

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

最佳答案

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

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

  2. 排除类加载器:应包含的类加载器名称列表从执行分析中排除。列表条目由一个colon (:)并且可以使用 wildcard characters (* and ?) .这个选项在与冲突的特殊框架的情况下可能需要JaCoCo 代码检测,特别是不包含的类加载器有权访问 Java 运行时类。 (Default:
    sun.reflect.DelegatingClassLoader)

Warning: Use these options with caution! Invalid entries might break the code coverage launcher. Also do not use these options to define the scope of your analysis. Excluded classes will still show as not covered.

资源链接:

  1. EclEmma Code Coverage Preferences

以下示例都指定了同一组包含/排除模式:

  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*" /><br/>
    <filter excludes="com.foo.*Test*" file="myfilters.txt" />
    其中 myfilters.txt 文件包含这些行:

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

资源链接:

  1. Coverage filters
  2. I am certain that all of my classes are built with -g(debug='true')and yet EMMA still complains about missing debug info!

Ignore code coverage for unit tests in EclEmma

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

关于java - 如何从 EclEmma 的覆盖率计算中排除类,而不实际将它们从覆盖率本身中排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37004345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com