我使用 Spring JavaConfig 来定义我的 Spring 配置。由于单元测试使用与生产代码不同的 Spring 配置,因此当我在单元测试中使用 Clover 代码覆盖率时,生产配置显示为 100% 未被覆盖。
我可以使用@Configuration
注释来识别所有这些类。或者,我可以使用 @Bean
注释来标识这些类中的所有方法。
是否有一个 Clover exclude
或一个代码上下文过滤器,我可以将其设置为使用这些注释全局排除代码?我使用 maven-clover2-plugin
来运行 Clover。
最佳答案
目前 Clover 允许使用五种方法从覆盖率测量中排除代码:
排除整个文件
- 在 Ant 中是
/ / 标签 - 在 Maven 中是
、 或 选项
- 在 Ant 中是
排除某些方法
- 在 Ant 中,它是
/ 标记与 / /< 的组合
- 在 Maven 中,它不能直接使用 - 您必须使用
选项在外部 XML 文件中配置报告格式;问题出在 clover-setup 上,您还必须对其进行自定义 - 也许通过 maven-antrun-plugin 调用 Clover 可能会有所帮助
- 在 Ant 中,它是
排除某些陈述
- 在 Ant 中,它是
/ 标记与 / /< 的组合
- 在 Maven 中,您必须使用
- 在 Ant 中,它是
排除某些代码块
- 在 Ant 中它是
/ /< 带有预定义的 block 名称,例如“构造函数”或“开关” - 请参阅使用+覆盖+上下文了解更多详细信息 - 在 Maven 中,您必须使用
- 在 Ant 中它是
排除任意源代码行
您可以在源代码中添加 //CLOVER:OFF 和 //CLOVER:ON 内联注释
不幸的是,目前无法排除给定的类别。但是,我可以看到一些可用的解决方法:
在要排除的类周围添加//CLOVER:OFF 和//CLOVER:ON 注释。
排除整个文件
将这些@Configuration类视为测试代码。
这是一个黑客行为。 Clover 允许声明哪些类是测试类。匹配基于文件名、类签名和测试签名。请参阅
<testclass annotation=".*@Configuration.*"/>
虽然这不会禁用这些类的代码检测,但它们将被视为测试代码,并且不应影响应用程序代码指标。
请注意,Clover 分别计算应用程序和测试代码的代码指标。
引用文献:
关于java - 从 Clover 代码覆盖率中全局排除所有 Spring JavaConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36195140/