集成测试 – Jacoco-IntegrationTests代码覆盖

我无法克服这个问题 –

我有3个班级A B和C.

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

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

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

我得到的结果是没有任何课程.

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

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

请帮忙.谢谢

最佳答案 这可能是由许多问题引起的:

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部署在应用程序服务器上,则应用程序服务器可能还会在部署期间检测这些类的字节码,从而导致本地项目中的类文件与检测到的类文件不同的情况. jacoco代理(有关该问题的讨论,请参阅此主题:https://groups.google.com/forum/?fromgroups=#!topic/jacoco/GjSlBoFTRrc).在这种情况下,Jacoco提供了一个classdumpdir参数,可以设置为一个文件夹,jacoco将转储它在测试运行期间检测到的类.您需要在生成报告期间使用这些类.

参考

> http://www.eclemma.org/jacoco/trunk/doc/agent.html
> https://groups.google.com/forum/?fromgroups=#!topic/jacoco/GjSlBoFTRrc

点赞