4

我无法克服这个问题——我有 3 个 AB 和 C 类。

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

B 和 C 是另一个包中的类(wrt 类 A)

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

我得到的输出是没有检测类。

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

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

请帮助。谢谢

4

1 回答 1

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

参考

于 2013-01-03T09:09:39.060 回答