当前位置: 首页 > 工具软件 > Cobertura > 使用案例 >

cobertura对Java项目,java-cobertura 1.9.2的代码覆盖率为零,但测试正常

徐学潞
2023-12-01

我运行代码覆盖率目标:

然后,我得到以下输出(使用fork =“ true”时):

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at net.sourceforge.cobertura.util.FileLocker.lock(FileLocker.java:124)

at net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData(ProjectData.java:331)

at net.sourceforge.cobertura.coveragedata.SaveTimer.run(SaveTimer.java:31)

at java.lang.Thread.run(Thread.java:595)

Caused by: java.io.IOException: No locks available

at sun.nio.ch.FileChannelImpl.lock0(Native Method)

at sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:784)

at java.nio.channels.FileChannel.lock(FileChannel.java:865)

... 8 more

---------------------------------------

Unable to get lock on /vobs/rnc/rrt/roam2/roamSs/RoamMao_swb/RoamMao_bldu/ant_build/cobertura.ser.lock: null

This is known to happen on Linux kernel 2.6.20.

Make sure cobertura.jar is in the root classpath of the jvm

process running the instrumented code. If the instrumented code

is running in a web server, this means cobertura.jar should be in

the web server's lib directory.

Don't put multiple copies of cobertura.jar in different WEB-INF/lib directories.

Only one classloader should load cobertura. It should be the root classloader.

我正在使用Ant 1.7.0和cobertura 1.9.2.

有什么想法为什么没有覆盖?如我在目标中所见,测试运行正常.

我试图切换Java版本(1.5.0_06和1.6.0_10),但没有区别.

解决方法:

我发现成功设置环境属性cobertura.use.java.nio = false.

由于我使用的是ant,因此我通过将以下内容添加到< junit>中编辑了cobertura-build.xml文件.命令:

...

标签:code-coverage,cobertura,java

来源: https://codeday.me/bug/20191024/1919102.html

 类似资料: