zoukankan      html  css  js  c++  java
  • (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

      

  • 相关阅读:
    《梦段代码》阅读笔记03
    用户场景
    冲刺!
    冲刺!
    周总结8
    冲刺!
    冲刺!
    PMS权限管理和鉴权过程
    PMS构造函数以及apk如何扫描
    PMS的学习之旅
  • 原文地址:https://www.cnblogs.com/javasl/p/12844164.html
Copyright © 2011-2022 走看看