本周早些时候,我在恢复 Clover 运行时更改的项目属性时遇到了很大的困难(这样它就不会干扰后续插件):
Clover 插件完成后如何恢复 Maven project.build 变量?
我通过在 Maven 启动时保存这些属性并在我的插件中使用保存的变量而不是 Clover 更改的变量来解决了这个问题。
现在我能够在预集成测试阶段托管非仪器 WAR 文件,我的测试能够成功运行并通过(以前,我无法从仪器 WAR 文件运行应用程序,因为 Clover 不是在发布类路径上)。
不幸的是,我发现分叉的 Clover 生命周期超出了测试阶段。在我的测试通过并且嵌入式 Tomcat 实例关闭后,原始生命周期再次运行 Tomcat7 插件,启动服务器,然后重新运行测试。
我可以忍受它两次运行我的单元测试(这可以捕获仅在有或没有 Clover 仪器的情况下出现的边缘情况错误),但运行我的集成测试两次是完全没有必要的。这些测试不涉及生产代码(他们使用 Selenium 在浏览器中自动进行 UI 测试)。如前所述,检测的 WAR 文件无论如何都不起作用,因此在运行集成测试时它甚至不再存在。绝对没有理由需要再次运行这些测试。
如何在测试阶段完成后告诉 Clover 终止分叉生命周期,以便集成测试只运行一次?我目前只能在整个生命周期内启用它,或者根本不启用。
更新: 我发现即使我通过传入 -Dmaven.clover.skip=true 禁用 Clover 插件,它仍然会分叉生命周期。我发现防止这种情况的唯一方法是完全注释掉 Clover 插件,这样它就没有机会在跳过检测之前分叉生命周期。