首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java 7和spring工具运行Jacoco?

如何使用Java 7和spring工具运行Jacoco?
EN

Stack Overflow用户
提问于 2013-06-19 08:57:23
回答 2查看 3.8K关注 0票数 2

因为我在Java 7中使用cobertura遇到了一些问题,所以我正在尝试Jacoco。我的项目有一个父pom.xml和子项目。在一个项目中,我使用spring来运行一些集成测试--所以我在这个项目的pom.xml中有了这个插件

代码语言:javascript
复制
<plugin>
    <version>2.12.4</version>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!-- -XX:-UseSplitVerifier is for java 7 -->
        <argLine>
            -XX:-UseSplitVerifier 
            -javaagent:${settings.localRepository}/org/springframework/spring-instrument/${spring.version}/spring-instrument-${spring.version}.jar
        </argLine>
    </configuration>
</plugin>

因为我使用了Java 7,所以我在父pom.xml中设置了这个插件

代码语言:javascript
复制
<plugin>
    <version>2.5.1</version>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>1.7</source>
    <target>1.7</target>
    <optimize>true</optimize>
    <debug>true</debug>
    <showDeprecation>true</showDeprecation>
    <showWarnings>true</showWarnings>
    <encoding>utf8</encoding>
    </configuration>
</plugin>

现在,当我使用mvn clean install时,所有项目都在/target文件夹中有这个文件:jacoco.exec;但是这个使用spring-instrument的项目没有这个文件。我认为问题在于,Jacoco希望使用asm of spring-instrument,但它失败了(但我不确定我是否正确)。

Jacoco版本是0.6.3.201306030806

在这种情况下,为什么Jacoco不能使用仪器?我怎样才能克服这一切?

我想,也许我可以将maven编译器插件配置为将代码编译为1.6,这样我就不需要maven-surefire-plugin插件了。说得通吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-21 15:49:16

Jacoco插件定义的argLine值正在由尽力而为的插件重写。

在您的“jacoco plugin”配置中设置一个属性名,如下所示:

代码语言:javascript
复制
<propertyName>coverageAgent</propertyName>

然后在你的argLine插件配置中编辑它,这样它就包含了Jacoco的代理:

代码语言:javascript
复制
<argLine>
    -XX:-UseSplitVerifier
    ${coverageAgent} 
    -javaagent:${settings.localRepository}/org/springframework/spring-instrument/${spring.version}/spring-instrument-${spring.version}.jar
</argLine>

注意,Jacoco的代理被放置在Spring的仪器之前。这是应该这样做的,因为Jacoco在处理修改过的字节码(例如,AspectJ LTW产生的字节码)时遇到了问题。

实际上,即使是作为第一代理,Jacoco的报告仍然可能是错误的,但问题通常仅限于一小部分情况(例如http://sourceforge.net/p/eclemma/discussion/614869/thread/3d875388 )。

票数 3
EN

Stack Overflow用户

发布于 2013-06-19 10:22:27

我的猜测是,JaCoCo也使用java命令行,因为它可能是作为javaagent实现的。

可能是spring javaagent覆盖了JaCoCo 1吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17187029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档