在 Eclipse 中将 JaCoCo 与 Liberty Profile 8.5.5.4 结合使用不会产生任何代码覆盖率

Using JaCoCo with Liberty Profile 8.5.5.4 in Eclipse does not produce any code coverage

我正在尝试使用 JaCoCo 进行代码覆盖。我正在 运行ning 来自 Eclipse 的 Liberty(使用 Eclipse 启动器)。在 jvm.options 中,我添加了这些行:(用 代替路径)

-Xshareclasses:none
-javaagent:<location>/jacocoagent.jar=destfile=jacoco.exec,output=file,append=false,classdumpdir=./classdump

但是,在 运行测试之后,我没有看到任何覆盖率信息。看起来 JaCoCo 不能 link 到我的网络应用程序 war 文件中的 Java 类。

是否有 运行 具有 java 类 的不同进程? java 代理可以附加到该进程吗?

您使用的是 JaCoCo 0.7.3 或更高版本吗?如果是,我怀疑问题是由 issue #272 because last I checked, WebSphere Liberty profile did not define classes with a CodeSource location, so this heuristic in JaCoCo causes all classes in applications running on WebSphere Liberty profile to be ignored. If you can confirm that's the case for your application on some recent Liberty fixpak (MyClass.class.getProtectionDomain().getCodeSource().getLocation()), then I would suggest opening a WebSphere RFE, a JaCoCo issue 或两者的变化引起的。

问题已解决。

必须使用旧版本的 JaCoCo (0.7.2) 而不是最新版本 (0.7.6)。

感谢bkail