如何使用EclEmma和Eclipse忽略扫描某些类?

我正在使用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文件夹相同的结果。

您可以指定排除字段 :

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

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

仅匹配的路径条目:以逗号分隔的字符串列表,必须与类路径条目匹配。 如果类路径条目包含给定字符串之一,则类路径条目与filter匹配。 (例如“src / main / java”,默认值:无filter)

请参阅eclemma – 如何忽略有关如何忽略src文件夹的来源。

另请注意他们的注意事项,

警告:如果您的设置与项目中的任何类路径条目都不匹配,则覆盖模式下的每个新启动都将具有空分析范围。

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

我认为eclemma不排除文件:它是。 只是不像我想的那样。

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

试试看吧。 尝试排除您知道已覆盖的课程。 一旦你把它放到了排除首选项上,在新的覆盖率运行中它们仍然会在覆盖窗口中出现,但是它们将会显示为0%并且全部为红色。

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

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

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