我想我知道问题是什么,但我看不到简单的解决方案。
我有一个多项目pom,其中一个项目,一个Web应用程序,实现了一个JSON REST服务。
让我们调用这个服务API。我有另一个项目,它实现了一系列连接到各种后端服务的适配器。此代码作为JAR包含在Web应用程序中。
我对适配器连接的所有后端服务都进行了模拟。
我在服务API项目中的单元测试启动相应的后端服务模拟和顶级JSON / REST服务,并调用JSON / REST服务以端到端测试完整功能。
Top Level POM
---- Service API POM
---- Adapter POM
---- Utils POM
---- DTO's / comons POM
问题
声纳中的适配器测试覆盖率显示大部分代码未触及,尽管覆盖范围接近完成。
我在BOTH声纳和我的pom中添加了排除项,生成的代码仍显示在声纳测试代码覆盖范围内,显示大部分适配器代码行未被遍历。
父pom中的pom配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<configuration>
<b><argLine>
-javaagent:${sonar.jacoco.jar}=destfile=${sonar.jacoco.reportPath}
</argLine></b>
<test>**/*.java</test>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.5.3.201107060350</version>
<configuration>
<excludes>
<exclude>**/chargingprocess/com/ibm*</exclude>
<exclude>**/coclib/com/ibm*</exclude>
<exclude>**/businessmanagement/*</exclude>
<exclude>**/org/csapi*</exclude>
<exclude>**/com/bea/wsdl*</exclude>
<exclude>**/gsso/sso/ws*</exclude>
</exclude>
</configuration>
<executions>
<execution>
<id>setup</id>
<phase>validate</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
我怀疑问题是适配器的代码在jar中,用于在service api项目中运行的单元测试。为此,我将以下内容添加到服务API pom
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>../adapters/src/main/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
这似乎没有任何区别。 有什么想法可以解决这个问题吗?