jacoco显示代码覆盖率为0

时间:2015-06-04 18:46:41

标签: java maven code-coverage jacoco

我在pom.xml下面

<VirtualHost *:80>
        ServerAdmin EMAIL@hotmail.com
        ServerName URL.com
        ServerAlias www.URL.com
        ServerAlias *.URL.com

        SetEnv APPLICATION_ENV dev

        DocumentRoot /var/www/URL

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/URL.error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel debug

        CustomLog  ${APACHE_LOG_DIR}/URL.access.log combined
</VirtualHost>

我正在使用maven-compiler-plugin v2.5.1

当我从eclipse进行干净测试时,它会创建target / jacoco.exec文件,一旦创建它我用jacoco:report运行它,它也会创建报告。但是报告显示除了一个包之外所有包含0%代码覆盖率的包。

当我使用cobertura为同一组类运行报告时,它正确地向我们展示了代码覆盖率。

有人可以帮助我们了解问题所在。

更新

添加我的maven日志

<plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-surefire-plugin</artifactId>
             <version>2.18</version>
             <configuration>
             <!-- Sets the VM argument line used when unit tests are run. -->
                <argLine>-Xms512m -Xmx1024m -XX:MaxPermSize=512m ${jacoco.agent.argLine}</argLine>
             </configuration>
         </plugin>
         <plugin> 
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.5.201505241946</version>
            <configuration>
                <dataFile>target/jacoco.exec</dataFile>
            </configuration>
            <executions>
                <execution>
                    <id>pre-unit-test</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                    <configuration>
                            <propertyName>jacoco.agent.argLine</propertyName>
                            <destFile>target/jacoco.exec</destFile>
                    </configuration>
                </execution>
               <execution>
                    <id>default-report</id>
                    <phase>test</phase>
                    <goals>
                    <goal>report</goal>
                    </goals>
                </execution>
            </executions>
         </plugin>

更新

添加另一个maven日志......这是在运行测试用例之后

  [INFO] Scanning for projects...
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Adaptive Payment Platrom Core 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ app-core ---
[INFO] Deleting C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.5.201505241946:prepare-agent (pre-unit-test) @ app-core ---
[INFO] jacoco.agent.argLine set to -javaagent:C:\\Users\\SHANK030\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.7.5.201505241946\\org.jacoco.agent-0.7.5.201505241946-runtime.jar=destfile=C:\\Users\\SHANK030\\git\\AdaptivePaymentPlatform\\APP_Core\\target\\jacoco.exec,excludes=com/wdpr/payment/data/vo/*.class:com/wdpr/payment/data/mapper/*.class:com/wdpr/payment/helper/provider/AbstractInitializer.class:com/wdpr/payment/helper/provider/Agent.class:com/wdpr/payment/helper/provider/AgentException.class:com/wdpr/payment/helper/provider/AgentFactory.class:com/wdpr/payment/helper/provider/CachedProperties.class:com/wdpr/payment/helper/provider/CachedPropertiesListener.class:com/wdpr/payment/helper/provider/ConnectionPoolAgent.class:com/wdpr/payment/helper/provider/ConnectionPoolUtility.class:com/wdpr/payment/helper/provider/FixedLengthFieldMessage.class:com/wdpr/payment/helper/provider/InitializerSampleImpl.class:com/wdpr/payment/helper/provider/Loader.class:com/wdpr/payment/helper/provider/PropertyHelper.class:com/wdpr/payment/helper/provider/Provider.class:com/wdpr/payment/helper/provider/StratusAck.class:com/wdpr/payment/helper/provider/StratusAuthReq.class:com/wdpr/payment/helper/provider/StratusAuthRsp.class:com/wdpr/payment/helper/provider/StratusConnection.class:com/wdpr/payment/helper/provider/StratusConnectionMgr.class:com/wdpr/payment/helper/provider/StratusConnectionReader.class:com/wdpr/payment/helper/provider/StratusConnectionUtility.class:com/wdpr/payment/helper/provider/StratusFormatException.class:com/wdpr/payment/helper/provider/StratusHeartbeat.class:com/wdpr/payment/helper/provider/StratusMessage.class:com/wdpr/payment/helper/provider/StratusShutdown.class:com/wdpr/payment/helper/provider/StratusStartup.class:com/wdpr/payment/helper/provider/StratusUtility.class:com/wdpr/payment/helper/provider/StratusWebServiceProvider.class:com/wdpr/payment/helper/provider/Timer.class:com/wdpr/payment/helper/provider/WrappedException.class:com/wdpr/payment/helper/outbound/*.class
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ app-core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 30 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ app-core ---
[INFO] Compiling 129 source files to C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ app-core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ app-core ---
[INFO] Compiling 71 source files to C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.18:test (default-test) @ app-core ---
[INFO] Surefire report directory: C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target\surefire-reports

2 个答案:

答案 0 :(得分:1)

将您的jacoco插件配置更改为

     <plugin> 
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.5.201505241946</version>
        <configuration>
            <dataFile>target/jacoco.exec</dataFile>
        </configuration>
        <executions>
            <execution>
                <id>pre-unit-test</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
                <configuration>
                        <propertyName>jacoco.agent.argLine</propertyName>
                        <destFile>target/jacoco.exec</destFile>
                </configuration>
            </execution>
           <execution>
                <id>default-report</id>
                <phase>verify</phase>
                <goals>
                    <goal>report</goal>
                </goals>
            </execution>
        </executions>
     </plugin>

然后调用mvn verify

同时检查maven的输出,它会暗示你是否在测试中执行了jacoco。

答案 1 :(得分:0)

我在我的应用程序中使用powermock,这与JaCoCo执行的在线仪器不相符。所以使用离线仪器并排除了一些对我有用的clousure类。

我正在使用mvn clean verify install运行该作业,下面是我的pom的已更改片段。

<plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>2.18</version>
             <executions>
                <execution>
                    <id>default-test</id>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <systemPropertyVariables>
                            <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
                        </systemPropertyVariables>
                        <forkMode>once</forkMode>
                        <argLine>-Xms1024m -Xmx2048m -XX:MaxPermSize=1024m</argLine>

                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>**/StratusAuthTemplateProviderTest.class</exclude>
                            <exclude>**/StratusBalanceInquiryTemplateProviderTest.class</exclude>
                            <exclude>**/PersistCardAuthDetailsForRefundProcessorTest.class</exclude>
                            <exclude>**/PersistCardTxnDetailsProcessorTest.class</exclude>
                            <exclude>**/StratusAuthProcessorTest.class</exclude>
                            <exclude>**/UpdateTxnStatusTest.class</exclude>
                            <exclude>**/RulesTest.class</exclude>
                            <exclude>**/SampleRulesTest.class</exclude>
                            <exclude>**/RefundUpdatePmtTxnConfirmationProcessorTest.class</exclude>
                            <exclude>**/vo/*.class</exclude>
                            <exclude>**/outbound/*.class</exclude>
                            <exclude>**/notification/*.class</exclude>
                        </excludes>
                    </configuration>
                </execution>
            </executions>
     </plugin>
     <plugin> 
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.4.201502262128</version>
        <configuration>
            <excludes>
                <exclude>com/wdpr/payment/data/mapper/*.class</exclude>
                <exclude>**/*AjcClosure?.class</exclude>
            </excludes>
        </configuration>
        <executions>
            <execution>
                <id>default-instrument</id>
                <goals>
                    <goal>instrument</goal>
                </goals>
            </execution> 
            <execution>
                <id>default-restore-instrumented-classes</id>
                <goals>
                    <goal>restore-instrumented-classes</goal>
                </goals>
            </execution>
           <execution>
                <id>default-report</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>report</goal>
                </goals>
            </execution>  
            <execution>
                <id>default-check</id>
                <goals>
                    <goal>check</goal>
                </goals>
                <configuration>
                    <rules>
                        <rule>
                            <element>METHOD</element>
                        </rule>
                    </rules>
                </configuration>
            </execution>
        </executions>
     </plugin>