单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍

这篇具有很好参考价值的文章主要介绍了单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

🍓 更多文章请点击
单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍

单元测试junit各版本使用介绍


单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍

一、 简介

官网:http://www.junit.org

单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,所以单元测试就是针对Java方法的测试,进而检查方法的正确性。

好处:
1. 可以书写一系列的测试方法,对项目所有的接口或者方法进行单元测试。
2. 启动后,自动化测试,并判断执行结果, 不需要人为的干预。
3. 只需要查看最后结果,就知道整个项目的方法接口是否通畅。
4. 每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句。

二、Junit5介绍

JUnit5在2017年就发布了,你还在用junit4吗?

Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库各个版本使用情况下文中会指明
作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。

单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍

JUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。
JUnit Jupiter: JUnit Jupiter提供了JUnit5的新的编程模型,是JUnit5新特性的核心。内部 包含了一个测试引擎,用于在Junit Platform上运行。
JUnit Vintage: 由于JUint已经发展多年,为了照顾老的项目,JUnit Vintage提供了兼容JUnit4.x,Junit3.x的测试引擎。

1.JUnit5常用注解

  • @Test :表示方法是测试方法。但是与JUnit4的@Test不同,他的职责非常单一不能声明任何属性,拓展的测试将会由Jupiter提供额外测试
  • @ParameterizedTest :表示方法是参数化测试,下方会有详细介绍
  • @RepeatedTest :表示方法可重复执行,下方会有详细介绍
  • @DisplayName :为测试类或者测试方法设置展示名称
  • @BeforeEach :表示在每个单元测试之前执行
  • @AfterEach :表示在每个单元测试之后执行
  • @BeforeAll :表示在所有单元测试之前执行
  • @AfterAll :表示在所有单元测试之后执行
  • @Tag :表示单元测试类别,类似于JUnit4中的@Categories
  • @Disabled :表示测试类或测试方法不执行,类似于JUnit4中的@Ignore
  • @Timeout :表示测试方法运行如果超过了指定时间将会返回错误
  • @ExtendWith :为测试类或测试方法提供扩展类引用

2.断言(assertions)

断言(assertions)是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是 org.junit.jupiter.api.Assertions 的静态方法。JUnit 5 内置的断言可以分成如下几个类别:检查业务逻辑返回的数据是否合理。所有的测试运行结束以后,会有一个详细的测试报告;

用来对单个值进行简单的验证。如:
单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍

3.新特性

很多这里简单介绍一个显示名称

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

@DisplayName("显示名称测试")
class DisplayNameDemo {

    @Test
    @DisplayName("我的 第一个 测试")
    void testWithDisplayNameContainingSpaces() {
    }

    @Test
    @DisplayName("我的 第一个 测试")
    void testWithDisplayNameContainingSpecialCharacters() {
    }

    @Test
    @DisplayName("😱")
    void testWithDisplayNameContainingEmoji() {
    }
}

结果名称已显示
单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍优点:通过这种方式,可以在方法名是英文特别长或者很难用英文描述清楚的场景下,增加中文解释

三、各版本使用介绍

本文使用Maven(Java包管理工具)导入所需要的jar包

1.原始版本Junit4

1.1引入Pom依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
</dependency>

1.2示例

注意事项
测试方法必须是公共的无参数无返回值的非静态方法
在测试方法上使用@Test注解标注该方法是一个测试方法

注解 含义
@Test 表示测试方法
@Before 在测试方法前运行
@After 在测试方法后运行
import org.junit.Assert;
import org.junit.Test;


public class JunitTest {
    //定义测试方法
    @Test
    public void testSum() {
        int sum = SumTest.sum(4, 5, 1);
        Assert.assertEquals(10, sum);
//        Assert.assertEquals(0,sum);
    }
}
class SumTest {
    public static int sum(int... nums) {
        // 可变参数可以当作数组使用
        Integer sum = 0;
        for (int i = 0; i < nums.length; i++) {
            sum += nums[i];
        }
        return sum;
    }

}

1.3 JUnit 断言

Junit所有的断言都包含在 Assert 类中。
这个类提供了很多有用的断言方法来编写测试用例。只有失败的断言才会被记录。Assert 类中的一些有用的方法列式如下:

1.void assertEquals(boolean expected, boolean actual):检查两个变量或者等式是否平衡
2. void assertTrue(boolean expected, boolean actual):检查条件为真
3. void assertFalse(boolean condition):检查条件为假
4. void assertNotNull(Object object):检查对象不为空
5. void assertNull(Object object):检查对象为空
6. void assertSame(boolean condition)·:assertSame() 方法检查两个相关对象是否指向同一个对象
7. void assertNotSame(boolean condition):assertNotSame() 方法检查两个相关对象是否不指向同一个对象
8. void assertArrayEquals(expectedArray, resultArray):assertArrayEquals()方法检查两个数组是否相等

1.4运行结果

通过:绿条
不通过:红条单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍
单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍

2. Spring 环境下单元测试

2.1引入Pom依赖

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-test</artifactId>
 <version>5.2.10.RELEASE</version>
</dependency>  

2.2示例

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfiguration.class)
public class BookServiceTest {
    
    @Autowired
    private BookService bookService;
    	
    @Test
    public void testSave(){
        bookService.save();
    }
}

3.SpringBoot环境下单元测试:

以前:

  • @SpringBootTest + @RunWith(SpringTest.class)

SpringBoot整合Junit以后。

  • 编写测试方法:@Test标注(注意需要使用junit5版本的注解)
  • Junit类具有Spring的功能,@Autowired、比如 @Transactional 标注测试方法,测试完成后自动回滚

统一引入

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

3.1 SpringBoot2.4.0之后

SpringBoot2.4.0之后,spring-boot-starter-test默认仅支持JUnit5,去掉了兼容JUnit4引擎:org.junit.vintage:junit-vintage-engine,无需添加@RunWith(SpringRunner.class)

@SpringBootTest
class BookServiceTest {
 
    @Autowired
    private BookService bookService;
 
    @Test
    void save() {
        bookService.save();
    }
}

3.2 版本在2.2.0 =< SpringBoot < 2.4

2.2.0 < SpringBoot < 2.4.0,spring-boot-starter-test默认使用JUnit5,同时也兼容支持JUnit4,无需添加@RunWith(SpringRunner.class)

@SpringBootTest
class BookServiceTest {

      @Autowired
      private BookService bookService;
  
      @Test
      void save() {
          bookService.save();
      }
}

如果想只用Junit5,可以排除junit-vintage-engine,排除Junit4的干扰,JUnit4中使用的测试引擎是junit-vintage-engine,JUnit5中使用的测试引擎是junit-jupiter-engine

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
</dependency>

3.3 SpringBoot2.2.0之前

SpringBoot2.2.0之前,spring-boot-starter-test引入的是JUnit4,使用的测试引擎是junit-vintage-engine

3.1不想加@RunWith,直接导入junit-jupiter坐标
<dependency> 
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.9.1</version> 
</dependency> 
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class JunitTest {

    @Test
    void testExample() {
        
    }
    
}
3.2添加注解@RunWith(SpringRunner.class) (无需引入多余依赖)
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestConnection {
 
    @Test
    public void testExample() {
    
    }
}

单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍文章来源地址https://www.toymoban.com/news/detail-414960.html

到了这里,关于单元测试junit(原始版本、Spring Boot各版本、junit5)使用介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 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)
  • 【单元测试】如何使用 JUnit5 框架?

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

    2024年04月10日
    浏览(45)
  • SpringBoot单元测试--Mockito+Junit5框架使用

    作为程序员为了提前发现代码bug,优化代码; 通常我们写完某个功能模块代码后都需要写单元测试对代码块进行测试(特别是敏捷开发中);Java项目最常用的单元测试框架即为Junit(目前最新版本为Junit5),SpringBoot本身也整合了该框架。在写单元测试时代码块中的调到第三方接口方

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

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

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

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

    2024年02月05日
    浏览(57)
  • Spring Boot使用JUnit和Mockito进行Service层单元测试

      在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如何去保证这些方法产生的结果是我们想要的呢?那么在SpringBoot项目中我们是如何对Service层的方法进行测试的呢?   单元测试是一种软件测试方法,用于测试代码的最小可测试单元。在Java开发

    2024年02月03日
    浏览(55)
  • 单元测试框架——Junit5

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

    2024年02月11日
    浏览(44)
  • springboot项目使用Junit5 + mockito + jacoco 实现单元测试以及代码覆盖率检查

    在创建springboot项目时会默认添加spring-boot-starter-test依赖,其中已经包含了junit、mockito依赖,根据springboot版本的不同junit和mockito的版本也会有所不同 先说一下各自功能: junit只说一点,junt4和junit5的注解不同,使用方式略有差异,其他不赘述了,基本用法都懂。 mockito是mock的

    2023年04月23日
    浏览(58)
  • 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)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包