gpt4 book ai didi

java - 从 Clover 代码覆盖范围中全局排除所有 Spring JavaConfig

转载 作者:行者123 更新时间:2023-11-30 08:39:19 24 4
gpt4 key购买 nike

我使用 Spring JavaConfig 来定义我的 Spring 配置。由于单元测试使用与生产代码不同的 Spring 配置,因此当我将 Clover 代码覆盖率与单元测试一起使用时,生产配置显示为 100% 未发现。

我可以使用 @Configuration 注释来识别所有这些类。或者,我可以使用 @Bean 注释来标识这些类中的所有方法。

是否有 Clover exclude 或代码上下文过滤器可以设置为使用这些注释全局排除代码?我使用 maven-clover2-plugin 来运行 Clover。

最佳答案

目前 Clover 允许使用五种方法从覆盖率测量中排除代码:

  1. 排除整个文件

    • 在 Ant 中是 / / 标签
    • 在 Maven 中它是 , 选项
  2. 排除某些方法

    • 在 Ant 中,它是 / 标签结合 / /<
    • 在 Maven 中不能直接使用 - 您必须使用 选项在外部 XML 文件中配置报告格式;问题在于您还必须自定义的 clover-setup - 也许通过 maven-antrun-plugin 调用 Clover 在这里可以提供帮助
  3. 排除某些陈述

    • 在 Ant 中是 / 标签与 / /<
    • 在 Maven 中你必须使用
  4. 排除某些代码块

    • 在 Ant 中,它是 / /< 带有预定义的 block 名称,例如“构造函数”或“开关”- 有关更多详细信息,请参阅 Using+Coverage+Contexts
    • 在 Maven 中你必须使用
  5. 排除任意源代码行

您可以在源代码中放置//CLOVER:OFF//CLOVER:ON 内联注释

不幸的是,目前无法排除给定的类。但是,我可以看到一些可用的解决方法:

  1. 在要排除的类周围添加//CLOVER:OFF 和//CLOVER:ON 注释。

  2. 排除整个文件

  3. 将这些@Configuration 类视为测试代码。

这是一个黑客。 Clover 允许声明哪些类是测试类。匹配基于文件名、类签名和测试签名。请参阅 / / 标签。在此 testclass 标记中,您可以定义匹配整个类签名的正则表达式。在您的情况下,它可能是:

<testclass annotation=".*@Configuration.*"/>

虽然这不会禁用这些类的代码检测,但它们将被视为测试代码,并且不应影响应用程序代码指标。

请注意,Clover 分别计算应用程序和测试代码的代码指标。

引用资料:

关于java - 从 Clover 代码覆盖范围中全局排除所有 Spring JavaConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36195140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com