我们决定尝试将 Spock 作为我们基于 Java 的 EE 应用程序的测试框架。目前我们有一个基于 jenkins + maven + jacoco 部署的 CI 基础设施。
问:问题是将 spock 与所有这些集成的最佳方式是什么?有什么建议和最佳实践吗?
我们决定尝试将 Spock 作为我们基于 Java 的 EE 应用程序的测试框架。目前我们有一个基于 jenkins + maven + jacoco 部署的 CI 基础设施。
问:问题是将 spock 与所有这些集成的最佳方式是什么?有什么建议和最佳实践吗?
鉴于您的工具链,与 Java/JUnit 相比,唯一不同的是让 Groovy(测试)编译在 Maven 中工作(请参阅spock-example项目)。除此之外,您不必做任何特别的事情,因为 Spock 只是一个自动激活的自定义 JUnit 运行器。您将获得相同的报告等。您甚至可以在同一个源目录中进行 Spock 和 JUnit 测试并一起运行它们。
实际上,您可能无法与 Sonar 集成。Sonar Surefire 传感器将成功找到您的 Surefire 报告;但是,传感器会尝试链接到测试源以发布到 Sonar。执行此操作时,它假定文件扩展名为 .java。因此,您将在构建中看到如下所示的输出:
[INFO] [13:00:34.734] 传感器 SurefireSensor ...
[INFO] [13:00:34.735] 解析 /home/amcdowel/accurev/projectFoo/target/surefire-reports
[WARN] [13:00:34.747]找不到资源:com.abc.monitor.app.model.MonitorTest
您的 Spock 测试生成的代码覆盖率将成功报告在您的 Sonar 仪表板中,但不会包括单元测试的数量和成功/错误计数。