13.Springboot整合junit5单元测试与生成单元测试覆盖率

这篇具有很好参考价值的文章主要介绍了13.Springboot整合junit5单元测试与生成单元测试覆盖率。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

现在基本大公司都要求单元测试了,保证我们代码得质量,而我司更是要求覆盖率要达到60%以上,所以搞一下。

1.maven集成

<!-- 单元测试覆盖率 -->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
 	 <version>2.7.2</version>
 </dependency>
<!-- junit5 -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-runner</artifactId>
    <version>1.7.0</version>
    <scope>test</scope>
</dependency>

2.maven单元测试覆盖率集成组件

<!-- 跳过测试test -->
<build>
<plugins>
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.22.2</version>
   <configuration>
       <!-- skipTests设置为false才可以走单元测试哦。如果设置为true的话,要么不会生成覆盖率,要么覆盖率为  -->
       <skipTests>false</skipTests>
       <includes>
           <include>**/Test*.java</include>
           <include>**/*Test.java</include>
           <include>**/*Tests.java</include>
           <include>**/*TestCase.java</include>
           <include>**/*Spec.class</include>
       </includes>
   </configuration>
</plugin>
 <plugin>
      <groupId>org.jacoco</groupId>
           <artifactId>jacoco-maven-plugin</artifactId>
           <version>0.8.7</version>
           <executions>
               <execution>
                   <id>prepare-agent</id>
                   <goals>
                       <goal>prepare-agent</goal>
                   </goals>
               </execution>
               <execution>
                   <id>report</id>
                   <phase>test</phase>
                   <goals>
                       <goal>report</goal>
                   </goals>
               </execution>
           </executions>
</plugin> 

</plugins>
</build>

3.编写单元测试

创建单测启动基类

import org.springframework.boot.test.context.SpringBootTest;

/**
 * @author cf
 * @date 2022/12/26下午 2:52
 */
@SpringBootTest(classes = BasicPatternApplication.class)
public class BaseTest {
}

resources里面得配置文件要迁移到test文件夹下,如下图:

springboot单元测试覆盖率,# SpringBoot详细使用,单元测试,spring boot,junit

编写单测类:


import com.qax.needle.framework.boot.model.PageResult;
import org.junit.jupiter.api.Test;
import org.junit.Assert;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletResponse;

/**
 * @author cf
 * @date 2022/12/26下午 2:51
 */
public class AreasAccessInfoServiceImplTest extends BaseTest {

    @Autowired
    IAreasAccessInfoService iAreasAccessInfoService;
    private MockHttpServletResponse response;

    @Test
    public void page() {
        AreasAccessInfoPageReq areasAccessInfo = new AreasAccessInfoPageReq();
        Integer offset = 0;
        Integer limit = 10;
        areasAccessInfo.setCheckpointArea("110101");
        areasAccessInfo.setCheckpointName("检");
        areasAccessInfo.setLineType("1");
        areasAccessInfo.setCheckTimeEnd(1671465600000L);
        areasAccessInfo.setCheckTimeStart(1669824000000L);
        PageResult<AreasAccessInfoPageResp> page = iAreasAccessInfoService.page(areasAccessInfo, offset, limit);
        Assert.assertNotNull(page);
    }

    @Test
    public void statistics() {
        AreasAccessInfoPageReq areasAccessInfo = new AreasAccessInfoPageReq();
        areasAccessInfo.setCheckpointArea("110101");
        areasAccessInfo.setCheckpointName("");
        areasAccessInfo.setLineType("1");
        areasAccessInfo.setCheckTimeEnd(1671465600000L);
        areasAccessInfo.setCheckTimeStart(1669824000000L);
        AreasAccessInfoStatisticsResp statistics = iAreasAccessInfoService.statistics(areasAccessInfo);
        Assert.assertNotNull(statistics);
    }

    @Test
    public void export() {
        AreasAccessInfoPageReq areasAccessInfo = new AreasAccessInfoPageReq();
        areasAccessInfo.setCheckpointArea("110101");
        areasAccessInfo.setCheckpointName("检");
        areasAccessInfo.setLineType("1");
        areasAccessInfo.setCheckTimeEnd(1671465600000L);
        areasAccessInfo.setCheckTimeStart(1669824000000L);
        response = new MockHttpServletResponse();
        iAreasAccessInfoService.export(areasAccessInfo, response);
        Assert.assertNotNull("1");
    }
}

4.执行单元测试覆盖率

这里有两个方法:
1.使用maven自带得test,idea右侧maven模块执行项目下得test
2.使用cmd命令,在你的项目pom文件所在目录 ,打开cmd,执行如下:

mvn clean test org.jacoco:jacoco-maven-plugin:0.8.7:prepare-agent install -Dmaven.test.failure.ignore=true

结果如下:打开site文件夹下得 index.html
springboot单元测试覆盖率,# SpringBoot详细使用,单元测试,spring boot,junit
出来了:
springboot单元测试覆盖率,# SpringBoot详细使用,单元测试,spring boot,junit

5.有个坑

在编写单测得时候注意不要引入@Test得包为org.junit.Test,因为文章来源地址https://www.toymoban.com/news/detail-567685.html

  • spring boot 2.2之前使用的是 Junit4
  • spring boot 2.2之后使用的是 Junit5

到了这里,关于13.Springboot整合junit5单元测试与生成单元测试覆盖率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot 实战:JUnit5+MockMvc+Mockito 做好单元测试

    因为继承了 spring-boot-starter-parent ,所以我们依赖的 spring-boot-starter-test 不需要写具体的版本,可以直接集成父级的版本定义。其中, spring-boot-starter-web 是用于提供 REST API 的 web 容器, spring-boot-starter-test 可以提供各种测试框架的, spring-boot-maven-plugin 是将 SpringBoot 应用打包为

    2024年04月15日
    浏览(54)
  • 单元测试框架——Junit5

    Junit是一个开源的用于Java语言的单元测试框架,也是Java方向使用最广泛的单元测试框架。 在pom.xml中引入Junit5相关依赖 @Test :表示一个方法/用例 BeforeEach :表示被注解的方法在其它所有方法执行前都要执行一遍,也就是说其它方法有3个它就要执行3遍 @BeforeAll :表示被注解的

    2024年02月11日
    浏览(44)
  • Junit5单元测试框架详解

    前面我们学习了Selenium自动化测试框架,但是有的时候测试用例会很多,我们需要一个工具来管理这些测试用例,而Junit就是一个很好的管理工具,简单点来说,Junit就是一个针对Java的单元测试框架; 目录 一. 关于Junit5 二. Junit使用 2.1 添加Maven依赖 2.2 注解 2.3 断言 2.4 套件

    2024年02月06日
    浏览(49)
  • JUnit5-单元测试操作详解

    JUnit 5是JUnit测试框架的下一个主要版本,用于编写和运行单元测试。 与以前版本的 JUnit 不同,JUnit 5 由来自三个不同子项目的多个不同模块组成。 JUnit 5 =  JUnit 平台 +  JUnit Jupiter  +  JUnit Vintage JUnit 平台 是在 JVM 上启动测试框架的基础。它还定义了 TestEngine 用于开发在平台

    2024年04月10日
    浏览(52)
  • 【单元测试】如何使用 JUnit5 框架?

      Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform:定义了测试引擎的 API,是 JVM 上用于启动测试框架的基础服务,支持通过 IDE、构建工具、命令行等方式运行单元测试。 JUnit Jupiter:包含

    2024年04月10日
    浏览(46)
  • Junit5+Mockito单元测试详解

    1.宏观层面:AIR原则 A:Automatic(自动化) 全自动执行,输出结果无需人工检查,而是通过断言验证。 I:Independent(独立性) 分层测试,各层之间不相互依赖。 R:Repeatable(可重复) 可重复执行,不受外部环境( 网络、服务、中间件等)影响。 2.微观层面:BCDE原则 B: Bord

    2024年01月17日
    浏览(48)
  • 单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍

    🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝 🍓 更多文章请点击 单元测试 junit各版本 使用介绍 官

    2023年04月16日
    浏览(44)
  • 深度揭秘JUnit5与Mockito的单元测试神秘面纱

    在今天的学习中,我们将深入研究 JUnit 和Mockito,这是 Java 开发中最强大的 单元测试 工具之一。通过学习如何编写清晰、高效的单元测试,我们将揭开单元测试的神秘面纱,助力你在项目中写出更健壮的代码。 提示: 今天的代码是在第九天代码的基础上进行开发,我们将为

    2024年02月02日
    浏览(58)
  • 在 Java 中使用JUnit5进行单元测试和自动化测试

    单元测试和自动化测试是现代软件开发过程中必不可少的环节,可以提高代码质量和开发效率。JUnit5是Java中流行的单元测试框架,本文将介绍如何在Java中使用JUnit5进行单元测试和自动化测试。 2.1 单元测试的基本概念和原理 单元测试是一种测试方法,用于对软件系统中的最

    2024年02月03日
    浏览(45)
  • Spring Cloud中Controller单元测试 Junit5 & MockMvc

    在Spring Cloud中进行Controller的单元测试,使用Junit5和Mock。 Controller: 方式一:使用@SpringBootTest + @AutoConfigureMockMvc 方式二:使用@WebMvcTest + @ImportAutoConfiguration(RefreshAutoConfiguration.class) 解决 No Scope registered for scope name \\\'refresh\\\' 异常 注入Mockmvc方式有两种 方式一:(@AutoConfigureMockMvc / @

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包