首页 > 其他分享 >springboot 项目jacoco 覆盖率测试

springboot 项目jacoco 覆盖率测试

时间:2024-06-18 15:34:11浏览次数:10  
标签:cn 覆盖率 v2x bjca import org pca jacoco springboot

1.POM

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

 

<plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.2</version>
                <configuration>
                    <destFile>target/coverage-reports/jacoco-unit.exec</destFile>
                    <dataFile>target/coverage-reports/jacoco-unit.exec</dataFile>
                    <includes>
                        <include>**/service/**</include>
<!--                        <include>**/controller/**</include>-->
                        <include>**/utils/**</include>
                    </includes>
                    <!-- rules里面指定覆盖规则 -->
                    <rules>
                        <rule implementation="org.jacoco.maven.RuleConfiguration">
                            <element>BUNDLE</element>
                            <limits>  
                                <!-- 指定方法覆盖到50% -->
                                <limit implementation="org.jacoco.report.check.Limit">
                                    <counter>METHOD</counter>
                                    <value>COVEREDRATIO</value>
                                    <minimum>0</minimum>
                                </limit>
                                <!-- 指定分支覆盖到50% -->
                                <limit implementation="org.jacoco.report.check.Limit">
                                    <counter>BRANCH</counter>
                                    <value>COVEREDRATIO</value>
                                    <minimum>0</minimum>
                                </limit>
                                <!-- 指定类覆盖到100%,不能遗失任何类 -->
                                <limit implementation="org.jacoco.report.check.Limit">
                                    <counter>CLASS</counter>
                                    <value>MISSEDCOUNT</value>
                                    <maximum>0</maximum>
                                </limit>
                            </limits>
                        </rule>
                    </rules>
                </configuration>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <!--这个check:对代码进行检测,控制项目构建成功还是失败-->
                    <execution>
                        <id>check</id>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                    <!--这个report:对代码进行检测,然后生成index.html在 target/site/index.html中可以查看检测的详细结果-->
                    <execution>
                        <id>jacoco-site</id>
                        <phase>package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>

2.junit 示例

package cn.org.bjca.test;

import cn.org.bjca.v2x.cmv.datastructs.secureddata.V2XSecData;
import cn.org.bjca.v2x.enums.EndEntityCertType;
import cn.org.bjca.v2x.helper.COERHelper;
import cn.org.bjca.v2x.pca.Application;
import cn.org.bjca.v2x.pca.entity.ApplicationStatisticsCert;
import cn.org.bjca.v2x.pca.entity.IdentificationStatisticsCert;
import cn.org.bjca.v2x.pca.entity.StatisticsCert;
import cn.org.bjca.v2x.pca.service.ApplicationCertStatisticsService;
import cn.org.bjca.v2x.pca.service.CertChainService;
import cn.org.bjca.v2x.pca.service.IdentificationCertStaticsService;
import cn.org.bjca.v2x.pca.service.NonPseudonymCertService;
import cn.org.bjca.v2x.pca.service.PseudonymCertService;
import cn.org.bjca.v2x.pca.service.PseudonymCertStatisticsService;
import cn.org.bjca.v2x.pca.service.StatiscsApplicationCertService;
import cn.org.bjca.v2x.pca.service.StatiscsIdentificationCertService;
import cn.org.bjca.v2x.pca.service.StatisticsCertService;
import cn.org.bjca.v2x.pca.utils.RestResponsePage;
import cn.org.bjca.v2x.util.Base64Util;
import com.github.pagehelper.PageInfo;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * @author ******
 * @date 2024/6/17
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@ComponentScan(basePackages = {"cn.org.bjca.v2x"})
@EntityScan(basePackages = {"cn.org.bjca.v2x"})
@EnableScheduling
@MapperScan(basePackages = {"cn.org.bjca.v2x.*.mapper", "cn.org.bjca.v2x.web.common.mapper",
    "cn.org.bjca.v2x.component.mapper"})
public class YxlTest {

  @Autowired
  private PseudonymCertStatisticsService pseudonymCertStatisticsService;
  @Autowired
  private CertChainService certChainService;
  @Autowired
  private IdentificationCertStaticsService identificationCertStaticsService;
  @Autowired
  private ApplicationCertStatisticsService applicationCertStatisticsService;
  @Autowired
  private PseudonymCertService pseudonymCertService;
  @Autowired
  private NonPseudonymCertService nonPseudonymCertService;
  @Autowired
  private StatisticsCertService statisticsCertService;
  @Autowired
  private StatiscsApplicationCertService statiscsApplicationCertService;
  @Autowired
  private StatiscsIdentificationCertService statiscsIdentificationCertService;

  @Test
  public void testPc(){
    RestResponsePage restResponsePage = new RestResponsePage();
    int totalPages = restResponsePage.getTotalPages();
    System.out.println(totalPages);

    certChainService.download("1");

  }

  @Test
  public void testStatiscsPc(){
    pseudonymCertStatisticsService.statPseudonymCerts();
    identificationCertStaticsService.statIdentificationCerts();
    applicationCertStatisticsService.statAppPseudonymCerts();
  }

  @Test
  public void signedEncryptedCertApply(){
    //
    V2XSecData v2XSecData = COERHelper.decode(V2XSecData.class, Base64Util.decode("A4OCAmkCAYOAYAEmfLQ6gAF8DgEBgiSkFcREigDZgnGEJOeVTemNceIqYv0YklKTSb8RSWVFYaYbrzYg21GC5DlOYLsCw8MRY0p7Nz1Ei3u94H+km9STQjDGP8P6Q5ZWcdSEX66HIItixyM7YejW6+n5RFgFygl4ZtGbm0hiIN37w4Gfv+MuYpIEaWKzOZuU0IEo7AEnWwKCBAGOrJtAG509+4TXGkF15uKRV0/uMg8IZzZWFegUZVHvIQGCIYNPoxkDS19lnKJoquJYlnlOPO/X0vDkaMEjWSs1XlMFZVCDAAAAAAEmfLQ6hACpgwEBgACcAQGAAW+AAICEIYIuHkeS1VcJU4S6Z2HyDD96gbhZnAvZIYL3PdmKYUh65IEBAYADAIMIBiZ6UIdsfPFXgQp3d3cucmEuY29tJGG0AAIl+nYFhgAMgwEBgACcAQGAAg4rgAOJAAEBAoCAAQ8AAg4gAAFvAAFwAAFxAAFyAAIOIQACDigAAg4iAAIOIwACDiQAAg4lAAIOJgACDicAAg4pAAIOKgEAgIABAQACDi0BAAGCIYJqcMwU2tODDm+A0Vnef/g2eDcT/QhXJWifa6z+E0gFToCEIYK2XjZSXFP/UT15lhBRmfFhi1Ji8eM8rWBt+yjaqIoz9YRA9jDq4BCBhagklJlVRyKN+/M9/Kcw9hNTeEEvq7Z9gDBZKY7DIia+Y5qubcwGsFsHuzlUrPcz5lnmsvMLCO9gBIRAIYK4yO1rV0t/L4GFywRGCNzc9xFWvYgxhFdglsN2BVqThlyDAksdUKUHZTFboJXE88IJNErobtPettkwMXnxcg=="));
    pseudonymCertService.genSignedAndEncryptedPseudonymCert(v2XSecData, "APP_0918B000A2C2469585BC9049E839E510");
  }
  @Test
  public void createLinkageValueTables(){
    pseudonymCertService.testSignedAndEncryptedPseudonymCert();
    pseudonymCertService.createLinkageValueTables();
  }

  @Test
  public void genBatchSignedAndEncryptedPseudonymCert(){
    V2XSecData v2XSecData = COERHelper.decode(V2XSecData.class, Base64Util.decode("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"));
    pseudonymCertService.genBatchSignedAndEncryptedPseudonymCert(v2XSecData, "APP_0918B000A2C2469585BC9049E839E510");
  }

  //signApplicationCert
  @Test
  public void applyNonPseudonymCert(){
    V2XSecData v2XSecData = COERHelper.decode(V2XSecData.class, Base64Util.decode("A4OCAboCAYOAAAEmfKyPQFCDAAAAAAEmfKyPhAAUgwEBgACcAQGAAW+AAICEQYQ1ACxa5smcpC7osinTem+ePLtqzqCqnT0dUsgWzuuDKwn8/8h4U0a4ytqfZeWdvLbXtD4Ijk6rMdfE8DWacBBQgQEBgAMAgwgGJnpQh2x88VeBCnd3dy5yYS5jb20kYbQAAiX6dgWGAAyDAQGAAJwBAYACDiuAA4kAAQECgIABDwACDiAAAW8AAXAAAXEAAXIAAg4hAAIOKAACDiIAAg4jAAIOJAACDiUAAg4mAAIOJwACDikAAg4qAQCAgAEBAAIOLQEAAYIhgmpwzBTa04MOb4DRWd5/+DZ4NxP9CFclaJ9rrP4TSAVOgIQhgrZeNlJcU/9RPXmWEFGZ8WGLUmLx4zytYG37KNqoijP1hED2MOrgEIGFqCSUmVVHIo378z38pzD2E1N4QS+rtn2AMFkpjsMiJr5jmq5tzAawWwe7OVSs9zPmWeay8wsI72AEhEBXPWjHfEiihgmgCGUo0QPV6PrQ48bGz/w6aVq/8rcHqo9QAI1PCVAC5L4XllUurG4ccEWMBMAkv7imYbjf9q7w"));
    nonPseudonymCertService.applyNonPseudonymCert(v2XSecData, EndEntityCertType.Application,
        "APP_0918B000A2C2469585BC9049E839E510");

    V2XSecData v2XSecDataIc = COERHelper.decode(V2XSecData.class, Base64Util.decode("A4OCAboCAYOAAAEmfLB6QFCDAAAAAAEmfLB6hAAUgwEBgACcAQGAAW+AAICEQYQN7qzFrWx/g0T1VTZ3D83rTBg7ZpxDHi8u9hPBvboTgoTtOuWixuctnBySCHxaV5e42j8YJL/DsiqDM579RjbFgQEBgAMAgwgGJnpQh2x88VeBCnd3dy5yYS5jb20kYbQAAiX6dgWGAAyDAQGAAJwBAYACDiuAA4kAAQECgIABDwACDiAAAW8AAXAAAXEAAXIAAg4hAAIOKAACDiIAAg4jAAIOJAACDiUAAg4mAAIOJwACDikAAg4qAQCAgAEBAAIOLQEAAYIhgmpwzBTa04MOb4DRWd5/+DZ4NxP9CFclaJ9rrP4TSAVOgIQhgrZeNlJcU/9RPXmWEFGZ8WGLUmLx4zytYG37KNqoijP1hED2MOrgEIGFqCSUmVVHIo378z38pzD2E1N4QS+rtn2AMFkpjsMiJr5jmq5tzAawWwe7OVSs9zPmWeay8wsI72AEhECFj74Gqlmivkz2NnkwvGSmrvUcuFEnmtQBqdjqQXPYM8lp6qujd2su+leJhxNPTqaBUKphmvDCflanPHMefCbJ"));
    nonPseudonymCertService.applyNonPseudonymCert(v2XSecData, EndEntityCertType.Identification,
        "APP_0918B000A2C2469585BC9049E839E510");

  }

  @Test
  public void queryCert(){

    String startTime = "2024-05-01 00:00:00";
    String endTime= "2024-06-17 00:00:00";
    String raId= "APP_0918B000A2C2469585BC9049E839E510";
    int pageNum=  1;
    int pageSize= 10;

    PageInfo<ApplicationStatisticsCert> applicationStatisticsCertPageInfo = statiscsApplicationCertService.listStatisticsAppCerts(
        startTime, endTime, raId, pageNum, pageSize);

    PageInfo<IdentificationStatisticsCert> identificationStatisticsCertPageInfo = statiscsIdentificationCertService.listStatisticsIdCerts(
        startTime, endTime, raId, pageNum, pageSize);

    PageInfo<StatisticsCert> statisticsCertPageInfo = statisticsCertService.listStatisticsPseudonymCerts(
        startTime, endTime, raId, pageNum, pageSize);

  }


}

 

标签:cn,覆盖率,v2x,bjca,import,org,pca,jacoco,springboot
From: https://www.cnblogs.com/wtxy/p/18254447

相关文章

  • Java项目:springboot优咪商城(计算机毕业设计)
    作者主页:Java毕设网 简介:Java领域优质创作者、Java项目、学习资料、技术互助文末获取源码一、项目介绍优咪网上购物体验系统1.该平台主要有两大功能:(1)浏览平台官方和认证作者提供的篮球相关信息,信息类型包括:视频,新闻,评论类文章,比赛结果(2)篮球周边商城,商品分类球......
  • springboot 集成shiro框架
    目录一、Shiro简介二、架构体系与专业术语三、Shiro与SpringSecurity的对比四、Shiro优缺点五、springboot集成Shiro一、Shiro简介        ApacheShiro是一个功能强大且易于使用的Java安全(权限)框架。Shiro可以完成:认证、授权、加密、会话管理、与Web集成......
  • 基于Java+SpringBoot+Vue+elementUI的学生宿舍管理平台的设计与开发
    第一章绪论1.1选题背景和意义1.2国内外学生宿舍管理平台现状第二章相关技术简介2.1开发工具介绍2.1.1IDEA2.1.2VSCode2.1.3Navicat2.1.4宝塔面板2.2关键技术介绍2.2.1Java2.2.2SpringBoot2.2.3Mybatis2.2.4Vue2.2.5MySQL2.2.6Redis2.2.7E......
  • springboot引入第三方jar包本地lib并打包
    springboot引入第三方jar包本地lib并打包亲测可用一、在项目根目录创建lib目录并放入第三方lib包--project----lib(放在这儿)----src----target二、pom中引入第三方lib<!--自定义引入jar--><dependency><groupId>commons-io</groupId><artifac......
  • springboot 集成 websocket
    1.首先添加maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>2.添加拦截器importcn.hutool.core.util.StrUtil;importcn.hutool.extra.spri......
  • Java毕业设计-基于springboot开发的图书商城管理系统-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、管理员功能介绍1.1图书列表1.2图书订单信息管理1.3图书类型管理四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的图书......
  • Java毕业设计-基于springboot开发的图书进销存管理系统-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、用户信息管理2、图书类型管理3、商品退货管理4、客户信息管理5、图书添加6、客户添加7、应收金额四、毕设内容和源代码获取总结Java......
  • SpringBoot3项目打war包部署至Tomcat
    前言:近期,在搞国产中间件的部署,那么则需要将项目打为war包,并且在tomcat内尝试成了再去部署到国产中间件吧,以免引起不必要的时间浪费。1、准备工作准备好tomcat10的版本准备好SpringBoot项目2、代码改造打war包需要从springboot依赖中排除tomcat相关的包,我们以Snowy国产快速......
  • SpringBoot3整合SpringDoc实现在线接口文档
    写在前面在现目前项目开发中,一般都是前后端分离项目。前端小姐姐负责开发前端,苦逼的我们负责后端开发事实是一个人全干,在这过程中编写接口文档就显得尤为重要了。然而作为一个程序员,最怕的莫过于自己写文档和别人不写文档大家都不想写文档,那这活就交给今天的主角Swagger来实现......
  • 毕业设计——基于springboot的电力巡检系统
    !!!有需要的小伙伴可以通过文章末尾名片咨询我哦!!! ......