Jacoco-IntegrationTests代码覆盖率

时间:2012-11-14 07:39:42

标签: integration-testing code-coverage emma jacoco

我无法克服这个问题 - 我有3个班级A B和C.

A是一个集成测试类,它一起测试B和C类。

B和C是另一个包中的类(w.r.t A类)

现在,当我运行集成测试类A时,我希望代码覆盖率显示B和C的哪些部分被覆盖。我没有得到所需的输出。

我得到的是输出结果是没有任何课程。

因此没有两个类的测试覆盖率......如果我在src / main / java中编写一个示例代码与A在同一模块中。它识别该类并对其进行检测。

为什么它不能对其包外的类做同样的事情。

请帮助。谢谢

1 个答案:

答案 0 :(得分:2)

这可能是由许多问题造成的:

<强> 1。没有根据jacoco代理触发的类

首先需要检查您的类B和C是否已由jacoco代理触发。这可以通过生成jacoco报告并单击会话链接(右上角)来完成。

如果此处未列出您的B类或C类,则表示您的jacoco代理存在问题,并且未附加到触发B / C类的正确JVM或B类中没有代码/ C被触发了。

<强> 2。根据jacoco代理触发的类但没有可用的源/类文件

如果此处列出了您的B类或C类,但它不可点击,则表示您的班级B / C已由jacoco代理触发并检测到,但无法将其链接。

请记住,在生成报告期间,jacoco需要提供类文件和源文件才能生成报告。 (如果您使用的是maven,它需要project.build.outputDirectory中的类文件和project.build.sourceDirectory中的源文件

第3。根据jacoco代理触发的类但可用的错误类文件

如果您的B类或C类部署在appserver上,那么appserver可能会在部署期间检测这些类的字节码,从而导致本地项目中的类文件与类文件不同的情况由jacoco代理检测到(有关该问题的讨论,请参阅此主题:https://groups.google.com/forum/?fromgroups=#!topic/jacoco/GjSlBoFTRrc)。在这种情况下,Jacoco提供了一个classdumpdir参数,可以设置为一个文件夹,jacoco将转储它在测试运行期间检测到的类。您需要在生成报告期间使用这些类。

参考文献