我一直在尝试使用Cobertura和Junit为我的Web应用程序生成代码覆盖率,但遇到了问题。我的webapp是部署在WebSphere Liberty Profile上的Java Web应用程序。我已按照此处提到的步骤进行操作:https://github.com/cobertura/cobertura/wiki/FAQ#using-cobertura-with-a-web-application
我的步骤如下:
问题是,当我停止自由时,不会生成cobertura.ser文件。我试过" hack"这里提到: https://github.com/cobertura/cobertura/wiki/FAQ#using-cobertura-with-a-web-application
它似乎工作(我实际上有一些覆盖信息),但我看到cobertura.ser文件被反复初始化为零大小,然后大小增加到一些数字,所以我有点犹豫使用这个。而且,这需要改变代码本身,并且取决于被调用的注销代码,这对于自动化来说并不是很理想。
但我对Websphere Liberty的设置更感兴趣,例如为JBoss描述的设置
-Djboss.shutdown.forceHalt=false
特别是,一个允许Cobertura检测Liberty配置文件调用的JVM关闭挂钩的jvm设置。是否有这样的WebSphere / Liberty设置?
答案 0 :(得分:1)
自由配置文件并不会调用Runtime.halt所以应该适当地调用所有关闭挂钩。我想我会重新看一下,我想我设法让它工作(我说我想是因为没有一个命令行脚本工作所以我可能仍然做错了)
最后我查看了WEB-INF / classes,并且有一个1480字节的cobertura.ser文件(即非零。)。当我运行报告工具时,它说我没有覆盖,所以我删除了文件并返回重现。 WEB-INF / classes中的cobertura.ser文件尚未生成。相反,我查看了服务器工作目录(如果它在那里)而且它不是。当我为此生成报告时,我得到了报道。
所以可以寻找一些可能的东西: