(005)sonar掃描文件,並整合jacoco,指定運行測試類,顯示junit測試覆蓋率


  這里用到了3個插件,sonar-maven-plugin、jacoco-maven-plugin、maven-surefire-plugin,簡單介紹一下功能:

  sonar-maven-plugin:代碼掃描、分析出不規代碼,配合jacoco-maven-plugin可以顯示出junit單元測試覆蓋率。

  jacoco-maven-plugin:統計junit單元測試覆蓋率。

  maven-surefire-plugin:可以配置運行哪些junit單元測試類。

  這3個插件可以各自獨立運行,實現自己的功能。現在配置一個項目的pom.xml文件,記錄一下:

<profiles>
  <profile>
    <id>sonar</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <sonar.host.url>
        http://localhost:9000
      </sonar.host.url>
      <!--
      <sonar.inclusions> 
        src/main/java/com/sl/service/**,
        src/main/java/com/xx/service/impl/**, 
        src/main/java/com/sl/controller/TestController.java, 
        src/main/java/com/sl/controller/ArticleController.java 
      </sonar.inclusions> 
      <sonar.exclusions> 
        src/main/java/com/xx/service/impl/TestServiceImpl3.java 
      </sonar.exclusions> 
      -->
    </properties>
    <build>
      <plugins>

        <plugin>
          <groupId>org.sonarsource.scanner.maven</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>3.2</version>
        </plugin>

        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.1</version>
          <executions>
            <execution>
              <id>prepare-agent</id>
              <goals>
                <goal>prepare-agent</goal>
              </goals>
            </execution>
            <execution>
              <id>report</id>
              <phase>prepare-package</phase>
              <goals>
                <goal>report</goal>
              </goals>
            </execution>
            <execution>
              <id>post-unit-test</id>
              <phase>test</phase>
              <goals>
                <goal>report</goal>
              </goals>
              <configuration>
                <dataFile>target/jacoco.exec</dataFile>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.19</version>
            <dependencies>
              <dependency>
                <groupId>org.apache.maven.surefire</groupId>
                <artifactId>surefire-junit47</artifactId>
                <version>2.19</version>
              </dependency>
            </dependencies>
          <configuration>
            <!--配置是否跳過測試用例執行-->
            <skipTests>false</skipTests>
            <includes>
              <include>**/ArticleServiceImplTest.java</include>
            </includes>
            <excludes>
              <exclude>**/ArticleControllerTest.java</exclude>
            </excludes>
            </configuration>
        </plugin>

      </plugins>
    </build>
  </profile>
</profiles>

  說明:

  1、如果不配置jacoco,則sonar的控制台顯示的覆蓋率是0。

  2、sonar中配置的sonar.inclusions、sonar.exclusions是指定掃描的代碼:

    不影響單元測試和jacoco覆蓋率(項目/target/site/jacoco/index.html里面依然顯示全部的)。

    影響sonar控制台的單元測試覆蓋率 ,實際上是它指定掃描代碼的單元測試覆蓋率 ,沒掃描到的不會統計。

  3、surefire中skipTests為true時跳過單元測試。它里面的includes、excludes指定執行哪些單元測試,肯定影響sonar和jacoco的覆蓋率。

  4、說明一下命令

  sonar首次安裝插件,進入到項目跟目錄執行:mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar

  運行sonar,不執行單元測試:mvn -U compile sonar:sonar -Denv=sonar -fail-never

  運行sonar,   執行單元測試:mvn -U test sonar:sonar -Denv=sonar -fail-never

  運行sonar,   執行單元測試:mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar,同首次安裝一樣。

  只運行junit單元測試或者同時統計jacoco覆蓋率:mvn test

  


免責聲明!

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



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