2011-07-28 67 views
8

我想使用JaCoCo和Sonar工具來測量集成測試的代碼覆蓋率。在Tomcat上使用JaCoCo Java代理獲取我的應用程序的代碼覆蓋率

爲此,我開始使用JaCoCo代理配置的Tomcat 5.5,以便從JaCoCo獲取轉儲文件。

因此,我設置該JAVA_OPTS

set JAVA_OPTS=-Xrs -XX:MaxPermSize=256m -XX:PermSize=256m -XX:NewRatio=3 -Xms512m -Xmx1024m -XX:+UseParallelGC -javaagent:C:\dev\servers\jacoco-agent.jar=destfile=C:\dev\servers\jacoco.exec,append=true,includes=my.application.* 

當我啓動Tomcat,生成C:\dev\servers\jacoco.exec文件,但沒有數據被填充。

有沒有我在我的服務器配置中忘記的東西?

問候。

+0

是的,[如果jacoco配置爲登錄目標文件,則在關機時寫入](http://car-online.fr/en/blog/fabien_duchene /2013-05-03-Java%20Code%20Coverage%20in%20Tomcat%20JSP%20applications,%20e.g.,%20WebGoat%20with%20Jacoco/) –

回答

4

據我記憶 - 文件將在Tomcat關閉時填充。

+0

好的,我會在本週嘗試一下,然後回到你身邊。 – romaintaz

+0

如果你不想關閉你的服務器,就像我們一樣,Cobertura有一個coberturaFlush webapp,可以使用http:// host:port/coberturaFlush/flushCobertura調用。一定要讓你的cobertura jar被同一個類加載器加載。 – Dormouse

8

我知道這可能不是2年前是一個選項,當這個問題被問過,但目前您有可用,而無需關閉Tomcat來獲取JaCoCo執行數據的一些其他的選擇(或與JaCoCo Java代理儀器的任何JVM )。

首先來看看對於JaCoCo的Java代理當前文檔:http://www.eclemma.org/jacoco/trunk/doc/agent.html

可以使用輸出= tcpserver的選項上JaCoCo劑有Java代理監聽命令。您可以設置address = *使tcpserver在所有接口上偵聽,並且您可以設置參數port = 6300以選擇tcpserver應偵聽的端口。

通過tcpserver,可以指示JaCoCo java代理在您需要時向您發送數據。

如果您的JVM當前正在公開JMX,那麼您可以使用另一個選項,而無需打開其他端口。通過設置jmx = true選項,JaCoCo Java代理將公開可與之交互的MBean。

如果您使用的是maven,您可以查看我最近編寫的插件,以便在運行時從遠程JVM中收集JaCoCo數據。該插件的項目位於:
https://github.com/mattcj/jacocotogo

相關問題