【发布时间】:2013-08-09 11:28:15
【问题描述】:
具有以下 Maven 项目结构:
-project1 <-- parent pom with two children.
|--module1 <-- web services
\--module1-itest <-- integration tests written with TestNG
我们今天做什么:
- 在 module1 中运行 mvn sonar:sonar,显示代码覆盖率 Sonar 仪表板中的单元测试。
- 在 module1 上运行 mvn jetty:run,然后立即在 module1-itests 上运行 mvn test 进行测试。
我知道这远非理想情况...这更像是一个中间步骤,而我们试图改进一个几乎没有测试的遗留项目...
我的问题是:通过在 Sonar 的模块 1 仪表板中执行集成测试来完成代码覆盖率的最佳方法是什么?
最初,我倾向于将 module1-itest 中的代码移动到 module1,并使用 Failsafe 插件和与 JaCoCo 的有据可查的集成来运行它们。这样,Module1 将混合 JUnit 单元测试和 TestNG 集成测试,每个组分别由 Surefire 和 Failsafe 运行,在预集成阶段启动 Jetty 服务器。
但是,我们有理由将两个项目分开,所以我想知道:
- 上面的方法好不好?
- 我们是否可以使用任何其他推荐的方法来分隔两个项目,但包括 module1-itest 在 module1 Sonar 的仪表板中完成的代码覆盖?
谢谢,
【问题讨论】:
-
你用的是什么覆盖引擎?
-
我们正在使用 Emma(在 Eclipse 和 Sonar 中)。但是,如果需要,我们可以切换到 Clover 或 JaCoCo。
-
project1 是父元素(意味着它被模块引用为父元素)和聚合器(它有一个
<modules>)元素吗? -
是的。如果需要,我们可以对此进行更改。
标签: maven integration-testing code-coverage sonarqube test-coverage