声纳没有报告准确的测试覆盖率

时间:2013-03-07 02:36:44

标签: testing code-coverage sonarqube

我想我知道问题是什么,但我看不到简单的解决方案。

我有一个多项目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

问题

  1. 声纳中的适配器测试覆盖率显示大部分代码未触及,尽管覆盖范围接近完成。

  2. 我在BOTH声纳和我的pom中添加了排除项,生成的代码仍显示在声纳测试代码覆盖范围内,显示大部分适配器代码行未被遍历。

  3. 声纳版本:2.8

    父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>
    

    这似乎没有任何区别。 有什么想法可以解决这个问题吗?

0 个答案:

没有答案