我无法克服这个问题 –
我有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