从 Clover 代码覆盖范围中全局排除所有 Spring JavaConfig
Globally exclude all Spring JavaConfig from Clover code coverage
我使用 Spring JavaConfig 来定义我的 Spring 配置。由于单元测试使用与生产代码不同的 Spring 配置,当我将 Clover 代码覆盖与单元测试一起使用时,生产配置显示为 100% 未发现。
我可以使用 @Configuration
注释来识别所有这些 类。或者,我可以使用 @Bean
注释来标识这些 类.
中的所有方法
是否有 Clover exclude
或代码上下文过滤器可以设置为使用这些注释全局排除代码?我用的是maven-clover2-plugin
到运行四叶草。
目前 Clover 允许使用五种方法从覆盖率测量中排除代码:
排除整个文件
- 在 Ant 中它是
/ / 标签
- 在 Maven 中它是
、 或 选项
不包括某些方法
- 在 Ant 中它是
/ 标签与 / / <
- 在 Maven 中不能直接使用 - 您必须使用
选项在外部 XML 文件中配置报告格式;问题出在 clover-setup 上,您还必须对其进行自定义 - 也许通过 maven-antrun-plugin 调用 Clover 可能会有所帮助
不包括某些陈述
- 在 Ant 中它是
/ 标签结合 / / <
- 在 Maven 中,您必须使用
不包括某些代码块
- 在 Ant 中它是
/ / < 具有预定义的块名称,例如'constructor' 或 'switch' - 有关更多详细信息,请参阅 Using+Coverage+Contexts
- 在 Maven 中,您必须使用
排除任意源行
你可以在源代码中加入//CLOVER:OFF和//CLOVER:ON行内注释
遗憾的是,目前无法排除给定的 class。但是,我发现几乎没有可用的解决方法:
在要排除的 class 周围添加 //CLOVER:OFF 和 //CLOVER:ON 注释。
排除整个文件
将这些@Configuration class作为测试代码。
这是一个技巧。 Clover 允许声明哪些 classes 是测试 classes。匹配基于文件名、class 签名和测试签名。请参阅 / / 标记。在这个 testclass 标签中,您可以定义匹配整个 class 签名的正则表达式。在您的情况下,它可能是:
<testclass annotation=".*@Configuration.*"/>
虽然这不会禁用这些 classes 的代码检测,但它们将被视为测试代码,并且不应影响应用程序代码指标。
请注意,Clover 分别计算应用程序和测试代码的代码指标。
参考文献:
我使用 Spring JavaConfig 来定义我的 Spring 配置。由于单元测试使用与生产代码不同的 Spring 配置,当我将 Clover 代码覆盖与单元测试一起使用时,生产配置显示为 100% 未发现。
我可以使用 @Configuration
注释来识别所有这些 类。或者,我可以使用 @Bean
注释来标识这些 类.
是否有 Clover exclude
或代码上下文过滤器可以设置为使用这些注释全局排除代码?我用的是maven-clover2-plugin
到运行四叶草。
目前 Clover 允许使用五种方法从覆盖率测量中排除代码:
排除整个文件
- 在 Ant 中它是
/ / 标签 - 在 Maven 中它是
、 或 选项
- 在 Ant 中它是
不包括某些方法
- 在 Ant 中它是
/ 标签与 / / < - 在 Maven 中不能直接使用 - 您必须使用
选项在外部 XML 文件中配置报告格式;问题出在 clover-setup 上,您还必须对其进行自定义 - 也许通过 maven-antrun-plugin 调用 Clover 可能会有所帮助
- 在 Ant 中它是
不包括某些陈述
- 在 Ant 中它是
/ 标签结合 / / < - 在 Maven 中,您必须使用
- 在 Ant 中它是
不包括某些代码块
- 在 Ant 中它是
/ / < 具有预定义的块名称,例如'constructor' 或 'switch' - 有关更多详细信息,请参阅 Using+Coverage+Contexts - 在 Maven 中,您必须使用
- 在 Ant 中它是
排除任意源行
你可以在源代码中加入//CLOVER:OFF和//CLOVER:ON行内注释
遗憾的是,目前无法排除给定的 class。但是,我发现几乎没有可用的解决方法:
在要排除的 class 周围添加 //CLOVER:OFF 和 //CLOVER:ON 注释。
排除整个文件
将这些@Configuration class作为测试代码。
这是一个技巧。 Clover 允许声明哪些 classes 是测试 classes。匹配基于文件名、class 签名和测试签名。请参阅
<testclass annotation=".*@Configuration.*"/>
虽然这不会禁用这些 classes 的代码检测,但它们将被视为测试代码,并且不应影响应用程序代码指标。
请注意,Clover 分别计算应用程序和测试代码的代码指标。
参考文献: