【问题标题】:How do I ignore scanning certain classes using EclEmma and Eclipse?如何忽略使用 EclEmma 和 Eclipse 扫描某些类?
【发布时间】:2013-01-21 22:46:56
【问题描述】:

我正在使用 EclEmma(Eclipse 内部)扫描我的 JUnit 代码覆盖率。这可以正常工作 - 但是,我不希望 EclEmma 扫描我的 src/view 文件夹,因为它包含我认为不值得测试的 Swing 代码。

当 EclEmma 运行时,有什么方法可以忽略此文件夹,以便:a) 运行得更快,并且 b) 不会影响覆盖率?

编辑:

我的项目结构是:

src/view
src/model
src/controller

我已经在“首选项”页面中的“路径条目”部分尝试了这些(可能还有其他):

"src/view"
"src/view/*"
"view"
"view/*"
src/view

这些正在使用“首选项”页面中的“排除”部分:

*
*View*
*View*.class
src/view/*View*
src/view/*View*.class

他们都给我分析了整个 src 文件夹的相同结果。

【问题讨论】:

    标签: java eclipse eclemma


    【解决方案1】:

    [编辑] 维护者说你不能,除了源目录级别:https://github.com/jacoco/eclemma/issues/70

    我认为 eclemma 不排除文件:它是。和我想的不一样。

    例如,当您在首选项中进入排除项并指定 your.classes.here.* 时,这意味着这些类不会计入您的所有代码覆盖,而不是这些类不会包含在需要被测试覆盖。

    试试看。尝试排除您知道其中包含的课程。将其置于排除首选项后,在新的覆盖范围运行时,它们仍会出现在覆盖窗口中,但它们会显示为 0%,并且都将显示为红色。

    如果你问我,那就没用了。我仍在寻找一种适当的解决方案,以从需要被测试覆盖的类中按名称排除类。

    【讨论】:

    • 我也遇到了同样的问题,有没有办法解决这个问题
    • 现在是 2021 年,我也在寻找一种方法让我的报道看起来不错。
    【解决方案2】:

    你可以specify an exclude field:

    Excludes:应从执行中排除的类名列表 分析。列表条目由冒号 (:) 分隔,并且可以使用 通配符(* 和?)。 (默认:空)

    但是,使用它们的选项进行类路径匹配可能更容易:

    只有路径条目匹配:逗号分隔的字符串列表,必须 与类路径条目匹配。类路径条目匹配 过滤器,如果它包含给定的字符串之一。 (例如。 “src/main/java”,默认:无过滤器)

    请参阅eclemma - how to ignore source 了解如何忽略 src 文件夹。

    也请注意他们的谨慎,

    警告:如果您的设置与任何类路径条目不匹配 在您的项目中,覆盖模式下的每次新发布都会有一个 空的分析范围。

    【讨论】:

    • 谢谢,这看起来正是我想要的。不幸的是,当我在 Excludes 中使用模式 com.test.project.view.* 时,它似乎没有排除任何东西。编辑:哎呀,我没有注意到它说类名......
    • 我相信这是正确的答案,但我不相信它实际上在 EclEmma 中有效。我接受,但如果有人应该阅读此内容,请知道我无法弄清楚如何包含或排除类或路径。
    • @sdasdadas 很抱歉听到这个消息,您能发布您尝试过的内容吗?如果有任何拼写错误,它根本不起作用。
    • 我在这两个类别中都尝试了一些东西。大部分只是排列:ViewView.class、src/view/*、src/view、src/view/、"src/view"、-"src/view ",以及这些特性的所有不同组合。我已经尝试排除所有似乎也不起作用的东西......
    • 作为对您上次编辑的回应,我尝试过的每一件事都没有将范围留空 - 它只是将每个类都留在其中,因此它包含了所有内容。
    【解决方案3】:

    我已经放弃了 EclEmma,因为我不能让它做我想做的事情,所以我使用了不同的方法 - 我会在这里记录它以防它帮助其他人。

    1. 为了从测试中排除类,我将所有测试类命名为 *Case.java,然后通过 SuiteClasses 包含或排除它们。您可以在https://github.com/junit-team/junit4/wiki/Aggregating-tests-in-suites 阅读更多相关信息
    2. 为了测量覆盖率,我使用 Maven 和 Cobertura。这将仅测试我的测试套件中指定的文件并相应地生成覆盖率报告。

    【讨论】:

      猜你喜欢
      • 2013-04-23
      • 1970-01-01
      • 2021-07-10
      • 2021-10-31
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      相关资源
      最近更新 更多