2015-06-11 38 views
0

我一直在嘗試使用Cobertura和Junit爲我的Web應用程序生成代碼覆蓋,但遇到了問題。我的webapp是一個部署在WebSphere Liberty Profile上的Java Web應用程序。我按照這裏提到的步驟:https://github.com/cobertura/cobertura/wiki/FAQ#using-cobertura-with-a-web-application使用Cobertura進行部署在WebSphere Liberty Profile上的Junit測試webapp

我的步驟如下:使用的Cobertura儀器Ant任務

  1. 儀器類。在我的Web應用程序的lib文件夾
  2. 認沽cobertura.jar(以便它在classpath)
  3. 開始自由
  4. 運行Junits(JUnit的運行在比自由JVM等不同的JVM)

問題是,當我停止自由時,cobertura.ser文件不會生成。我已經嘗試了「黑客」這裏提到: https://github.com/cobertura/cobertura/wiki/FAQ#using-cobertura-with-a-web-application

它似乎工作(我居然得到了一些報道的信息),但我看到的是,cobertura.ser文件中被重複初始化爲零大小,然後大小增加到一些數字,所以我有點猶豫使用這個。而且,這需要代碼本身的改變,並且取決於被調用的註銷代碼,這對於自動化來說不太理想。

但我更感興趣的是對於WebSphere自由的設置,如JBoss的

-Djboss.shutdown.forceHalt=false 

描述特別的一個,一個JVM設置,將允許的Cobertura檢測由自由曲線稱爲JVM關閉掛鉤。 WebSphere/Liberty是否有這樣的設置?

回答

1

Liberty配置文件不會調用Runtime.halt,因此應該適當地調用所有關閉鉤子。我想我會看看重現,我想我設法得到它的工作(我說,我想是因爲沒有一個命令行腳本的工作,所以我可能還是做錯了)

  1. 編寫了一個簡單servlet war
  2. 下載cobertura並將cobertura-2.1.1.jar和下載的lib文件夾中的所有jar放入我的war的WEB-INF/lib中
  3. 運行java InstrumentMain類來檢測WEB中的類-INF/classes(選擇覆蓋它們)
  4. 啓動服務器
  5. 訪問應用
  6. 關機在端服務器

我看着在WEB-INF /類和有,這是1480個字節的文件cobertura.ser(即非零的。)。當我在這上面運行報告工具時,它說我沒有覆蓋,所以我刪除了文件並重新生成。沒有生成WEB-INF/classes中的cobertura.ser文件。相反,我查看了服務器的工作目錄(如果它在那裏),而不是。當我生成這個報告時,我得到了報道。

所以一些可能的事情,尋找:

  1. 這是該corbertura。你正在尋找的服務?在usr/servers /文件夾中查看是否有一個。
  2. 儀器化的類是否在應用程序之前或替代非儀器化的應用程序最終生成
  3. 是否可用cobertura依賴關係?
+0

嗨, 對我來說,我看不到cobertura.ser文件。爲了生成這個,我不得不在代碼中進行破解:https://github.com/cobertura/cobertura/wiki/FAQ#using-cobertura-with-a-web-application 我已經能夠使用JaCoCo。版本0.7.6不起作用,我需要使用版本0.7.2。現在,這將爲我完成這項工作。 謝謝 – Anton

相關問題