运行 Clover coverage reporter 将新列插入 CSV 测试并中断构建

Running Clover coverage reporter inserts new column to CSV test and breaks build

我正在尝试将 Clover 与工作中的 Java 项目集成。 Clover 已添加到类路径,插件已添加到 POM 并已设置许可证。 当我 运行 mvn clean clover:setup test clover:aggregate clover:clover Clover 正确启动时。但是,生成 csv 的测试失败,因为 CSV 输出不是预期的。这是为其中一项测试生成的内容:

<ID,NAME,[__CLR4_1_2_TEST_NAME_SNIFFER,"DESCRIPTION,Long","DESCRIPTION,Short",country
001,Fred,com_atlassian_clover.TestNameSniffer@e628ccb,Mr. Fred Flinstone,Fred Flinstone,US
002,Bob,com_atlassian_clover.TestNameSniffer@e628ccb,Mr. Bob the builder,Bob the builder,UK
003,Tintin,com_atlassian_clover.TestNameSniffer@e628ccb,Mr. Tin Tin,Tin Tin,FR
004,,com_atlassian_clover.TestNameSniffer@e628ccb,,Rob the Bob,
005,,com_atlassian_clover.TestNameSniffer@e628ccb],,Tom the Bob,
>

这是预期的结果:

<ID,NAME,["DESCRIPTION,Long","DESCRIPTION,Short",country
001,Fred,Mr. Fred Flinstone,Fred Flinstone,US
002,Bob,Mr. Bob the builder,Bob the builder,UK
003,Tintin,Mr. Tin Tin,Tin Tin,FR
004,,,Rob the Bob,
005,],,Tom the Bob,

为什么 Clover 会在 CSV 输出中添加一个新列,是否可以停止它?我正在使用 Maven 3.3、JDK 8 和 Clover 版本 4.0.2.

我曾尝试寻找答案,但似乎找不到与此问题类似的任何内容。当我删除失败的测试时,Clover 工作正常。

我很确定它已连接到您用来创建该 CSV 文件的代码(或库)。 Clover 本身不会修改 CSV 文件。我想有一个代码可以通过反射访问 Java 对象字段。由于 class 由 Clover 检测,它添加了一些检测代码(如 CLV_TEST_SNIFFER

基本上有两种方法可以解决您的问题:

  • 修改将 classes 转储为 CSV 的代码以排除静态 class 成员(这将有效地排除 Clover 对象)。无论如何,我认为不需要将静态成员转储到 CSV,正如我所假设的那样,CSV 是您的 Java 对象的数据投影(静态成员不属于对象,而是属于 class)。虽然,我不知道您的完整用例,所以我可能完全错了。
  • 您可以简单地 exclude files 从 Clover 检测中引起问题(那些被序列化为 CSV 的问题?),实际上您将丢失那些 classes 的覆盖数据。