JaCoCo 和缺少私有默认构造函数的覆盖范围

我希望看到一个示例来防止 JaCoCo 将私有空构造函数报告为 Java 类中未覆盖的代码。

在 maven 插件配置中,我有

   <rule>
     <element>CLASS</element>
       <excludes>
         <exclude>JAVAC.SYNTHCLASS</exclude>
         <exclude>JAVAC.SYNTHMETH</exclude>
       </excludes>
     </element>
   </rule>

构造函数不是有类似的东西吗?


答案 1

这不受支持。官方文件说:

用于测试执行有问题或设计不可能的代码的筛选器

  • 私有的空默认构造函数 - 假设没有调用它
  • 普通吸盘和二传手
  • 引发断言错误的块 - 如果出现条件,则应忽略整个块(如果!断言引发新的断言错误)

另请参阅: https://github.com/jacoco/jacoco/issues/298

更新:此问题已在 https://github.com/jacoco/jacoco/pull/529 中修复,应该在 0.8.0 中修复。


答案 2

无法关闭该选项。如果您迫切需要满足一些与覆盖率相关的质量门,您可以随时使用解决方法并通过反射调用这些私有构造函数。


推荐