我想在我的web應用程序中使用Cobertura代碼覆蓋錄製,但無法使其工作。我懷疑,這個問題是Spring或Hibernate和Cobertura之間的一些衝突,因爲三者都使用ASM庫來執行它們的字節碼操作。爲什麼Cobertura不能在我的Spring/Hibernate Webapp中工作?
我做了以下內容:
- 我使用的Cobertura Ant任務的儀器我的罐子在 「WEB-INF/lib目錄」,併產生 「cobertura.ser」 文件
- 我添加了「的Cobertura的.jar」到 「WEB-INF/lib目錄」
- 我啓動tomcat提供的Cobertura文件位置(net.sourceforge.cobertura.datafile = cobertura.ser)
當我啓動Tomcat,我得到以下錯誤當春天的消息繼續EXT初始化:
java.lang.NoSuchMethodException: com.foo.MyClass.setInstance($Proxy28)
at com.foo.common.runtime.spring.PluginInjector.findBestMatchingMethod(PluginInjector.java:252)
at com.foo.common.runtime.spring.PluginInjector.invokeMethod(PluginInjector.java:198)
at com.foo.common.runtime.spring.PluginInjector.afterPropertiesSet(PluginInjector.java:174)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
我已經知道,這是自帶的Cobertura的asm.jar不應該在classpath中,因此我只複製cobertura.jar到WEB-INF \ lib中。
此外,我也試過艾瑪,它的工作。然而,cobertura看起來更現代化,活躍(最後更新從2010年而不是2005年),並生成更好的報告,所以我更喜歡它比艾瑪。