我正在嘗試使用JaCoCo代碼覆蓋率。我從Eclipse運行Liberty(使用Eclipse啓動器)。在jvm.options,我添加了這些線:(替補<位置>的路徑)在Eclipse中使用JaCoCo和Liberty Profile 8.5.5.4不會產生任何代碼覆蓋率
-Xshareclasses:none
-javaagent:<location>/jacocoagent.jar=destfile=jacoco.exec,output=file,append=false,classdumpdir=./classdump
然而,在運行測試後,我沒有看到任何覆蓋信息。看起來JaCoCo無法鏈接到我的Web應用程序war文件中的Java類。
是否有一個由擁有java類的liberty運行的不同進程?一個Java代理可以附加到該進程?
是的,我正在使用JaCoCo 0.7.6。我不明白你的意思是「最近的一些Liberty fixpak(MyClass.class.getProtectionDomain()。getCodeSource()。getLocation())」,請你詳細說明一下。 我也試過使用脫機工具,但沒有運氣也沒有(沒有生成jacoco.exec)。 – Anton
您可以從http://wasdev.net/下載最新的測試版。您應該將這段代碼添加到應用程序中的某個類(例如,一個servlet)以查看它是否返回null;如果它爲空,那麼JaCoCo 0.7.3+將不起作用。也就是說,如果你不能讓線下儀器工作,那麼我真的不確定;只要使用脫機檢測類,它應該會導致JaCoCo運行時至少編寫一個空的jacoco.exec文件(包含所有缺省值,它將轉到與server.xml相同的目錄)。 –
感謝您澄清空檢查的事情,我會試一試。關於脫機檢測,我可能錯誤地放置了一些參數或與JVM類路徑相關的東西(不要以爲WAS允許修改JVM類路徑,我不知道如何解決這個問題)。 WAS可以毫無錯誤地加載已插裝的類,這給了我希望:) – Anton