我运行代码覆盖率目标:
然后,我得到以下输出(使用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