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

时间:2013-01-21 22:46:57

标签: java eclipse eclemma

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

3 个答案:

答案 0 :(得分:6)

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

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

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

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

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

答案 1 :(得分:5)

你可以specify an exclude field

  

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

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

  

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

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

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

  

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

答案 2 :(得分:1)

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

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