zoukankan      html  css  js  c++  java
  • Jacoco代码覆盖率

    官网配置:https://www.jacoco.org/jacoco/trunk/doc/maven.html

    jacoco配置

    pom文件中引入jacoco依赖

            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.5</version>
            </dependency>
    

    引入maven-surefire-plugin插件:

    Maven本身并不是一个单元测试框架,Java世界中主流的单元测试框架为JUnit和TestNG。Maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或者TestNG的测试用例。这一插件就是maven-surefire-plugin,可以称之为测试运行器(Test Runner),他能很好的兼容JUnit 3、JUnit 4以及TestNG。

               <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.5</version>
                    <configuration>
                        <!-- 扫描所有的测试类-->
                        <includes>
                            <include>**/*Test.java</include>
                        </includes>
                        <!-- 排除测试启动类,否则运行test的时候会报错-->
                        <excludes>
                            <exclude>**/ApplicationTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
    

    引入jacoco-maven-plugin插件:

    总体配置如下:

       <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.5</version>
                    <configuration>
                        <!-- 配置的扫描framework下所有的类,这里也可以限制新增的类-->
                        <includes>
                            <include>**/thingjs/framework/**</include>
                        </includes>
                    </configuration>
                    <executions>
                        <execution>
                            <id>prepare-agent</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>default-report</id>
                            <!-- 此处不配置的话,生成不了site文件夹-->
                            <phase>test</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                            <configuration>
                                <!-- 限制FW的新增类-->
                                <includes>
                                    <include>**/thingjs/framework/**/Fw*.class</include>
                                </includes>
                            </configuration>
                        </execution>
                        <execution>
                            <id>default-check</id>
                            <goals>
                                <goal>check</goal>
                            </goals>
                            <!-- Sonar中要求有具体的check规则,不然会报错,但是通过率不能太高,否则install的时候会失败-->
                            <configuration>
                                <rules>
                                    <rule>
                                        <element>PACKAGE</element>
                                        <limits>
                                            <limit>
                                                <counter>LINE</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>0.00</minimum>
                                            </limit>
                                            <limit>
                                                <counter>BRANCH</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>0.00</minimum>
                                            </limit>
                                        </limits>
                                    </rule>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    

    上面具体有3个阶段,官网上写的很详细了,具体怎么配置,可以查看

    prepare-agent:可以见https://www.jacoco.org/jacoco/trunk/doc/prepare-agent-mojo.html

    report:https://www.jacoco.org/jacoco/trunk/doc/report-mojo.html

    check:https://www.jacoco.org/jacoco/trunk/doc/check-mojo.html

    测试

    执行mvn test,就会出现下面的结果

    image-20210812102220316

    image-20210812102308239

    maven多模块配置

    通过shell获取csv中的数据进行实时计算

    #!/bin/bash
    :<<EOF
      作者: WGR
      时间: 2021/07/05
      作用:计算web和svc的单元测试覆盖率,输出变量到README.md中
    EOF
    # web的总行数
    webinstructions=`awk -F"," '{ instructions += $4 + $5} END { print instructions}' /builds/gHPfsBe5/0/uino-framework/framework/framework-web/target/site/jacoco/jacoco.csv`
    # web的覆盖行数
    webcovered=`awk -F"," '{ covered += $5} END { print covered}' /builds/gHPfsBe5/0/uino-framework/framework/framework-web/target/site/jacoco/jacoco.csv`
    # svc的总行数
    svcinstructions=`awk -F"," '{ instructions += $4 + $5} END { print instructions}' /builds/gHPfsBe5/0/uino-framework/framework/framework-service/target/site/jacoco/jacoco.csv`
    # svc的覆盖行数
    svccovered=`awk -F"," '{ covered += $5} END { print covered}' /builds/gHPfsBe5/0/uino-framework/framework/framework-service/target/site/jacoco/jacoco.csv`
    # 输出单元测试覆盖率
    awk 'BEGIN{print ('$webcovered'+'$svccovered')/('$svcinstructions'+'$webinstructions')*100 , "% covered" }'
    
  • 相关阅读:
    如何计算两个日期之间相差天数
    解决并发问题的小技巧
    Linq实现下拉框绑定
    No DataType in DataTemplate in Windows Phone(二)
    使用TOAD操作oracle初步
    使用log4net记录server Log
    尘世一场烟火
    No DataType in DataTemplate in Windows Phone(—)
    MVC设置初始页时发生的无法找到资源的简单错误
    oracle 使用in的灵异事件
  • 原文地址:https://www.cnblogs.com/dalianpai/p/15131624.html
Copyright © 2011-2022 走看看