Jacoco統計白盒測試覆蓋率(基於maven)


開發問:你寫的東西(自動化)覆蓋了我多少的代碼量?

恩,我思考下....

不妨試試jacoco吧,下面就來看看


原理: 自動插樁

JVM中通過-javaagent參數指定特定的jar文件啟動代理程序,代理程序在通過Class Loader裝載一個class前判斷是否轉換修改class文件,將統計代碼插入class,測試覆蓋率分析可以在JVM執行測試代碼的過程中完成。

效果:

 

基於maven,在server test里面編寫白盒測試代碼,在pom文件加入下面的build信息,run as install

<build>    
    <plugins> 
    
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-surefire-plugin</artifactId>
       <configuration>
         <includes>
            <include>**/*BaseDaoTest.java</include>        
         </includes>
         <excludes>
           <exclude>**/Abstract*.java</exclude>
         </excludes>
       </configuration>
     </plugin> 
    
    <plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.5.3.201107060350</version>
    <executions>
    
     <execution>
      <goals>
       <goal>
        prepare-agent
       </goal>
      </goals>
     </execution>
     
     <execution>
      <id>JaCoCo Report</id>
      <phase>prepare-package</phase>
      <goals>
       <goal>
        report
       </goal>
      </goals>
     </execution>
     
    </executions>
   </plugin>
   </plugins> 
  </build> 

 操作:

1.寫好單元測試代碼

2.上面的maven build,獲取覆蓋率報告

具體報告,可以幫助我們分析哪里覆蓋率做的不好,去優化我們的白盒測試代碼,覆蓋:

target/site/jacoco/index.html

行覆蓋率:度量被測程序的每行代碼是否被執行,判斷標准行中是否至少有一個指令被執行。
類覆蓋率:度量計算class類文件是否被執行。
分支覆蓋率:度量if和switch語句的分支覆蓋情況,計算一個方法里面的總分支數,確定執行和不執行的 分支數量。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM