1

我正在尝试对基于 java 的应用程序进行线路覆盖分析。在网上找到了很多关于如何使用 Sonar+JaCoCo 插件获取线路覆盖结果的资源,看起来很有希望。但是,我无法完全清楚如何实施此解决方案。

更多关于我的项目:

  1. 网站调用了一项服务。该服务是基于 java 的,并且是使用 maven 构建的。

  2. 还有一个在网站上运行的基于硒的测试套件(在多个实例中调用上述服务)。测试套件由 Ant 构建和调用。

  3. 服务的代码库和测试的代码库位于同一主机上的不同位置。

  4. 我需要基于集成测试套件为服务生成覆盖率报告。

我通过的资源是:

即使在经历了所有这些之后,我也不确定将 jacoco-agent.jar 放在哪里,是否让 jacoco 成为 maven(服务的构建过程)或 ant(测试的构建过程)的一部分,如何调用 jacoco 代理,在哪里指定源存储库(服务的代码库)和测试存储库位置。

我已经尝试了上述所有内容的盲目排列,但是一旦我向它们添加 jacoco 任务,maven 构建或 ant 构建就会开始失败。

有人可以帮我解决这个问题吗?我需要了解完成它要遵循的确切步骤。

4

1 回答 1

1

当您为测试模式执行服务器进程时,您需要确保在类路径上设置了 jacoco 代理。然后,jacoco 代理将有效地侦听并记录在 JVM 生命周期内覆盖的代码的详细信息。

然后,您执行将调用服务器的客户端 selenium 测试。在这种情况下,jacoco 代理将记录作为测试一部分执行的代码的详细信息。当客户端测试完成时,您需要关闭您的服务器进程,这应该会生成一个 jacoco 覆盖文件。

最后一步是根据您的覆盖率报告生成一个 jacoco html 报告。我可能会建议您考虑将基于 ANT 的 selenium 测试移动到您的 maven pom 中,因为这样会更容易控制测试执行的顺序。

于 2013-08-15T09:09:27.617 回答