欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot之Junit单元测试

程序员文章站 2022-03-10 18:23:14
一、概述...

一、概述

开发时,单元测试已经是必不可少的,一检验代码的逻辑,二、也方便他人代码的理解;

二、pom依赖

1、Junit4依赖

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

2、Junit5依赖

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.2.6.RELEASE</version>
    <!--<exclusions>
        <exclusion>
            <artifactId>junit</artifactId>
            <groupId>junit</groupId>
        </exclusion>
        &lt;!&ndash;兼容老的单元测试&ndash;&gt;
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>-->
</dependency>

这里采用的是junit5,所以将兼容junit4以前的jar都排除了;

三、相关使用

1、注解

Junit4 Junit5 说明
@Test @Test 测试注解,标记一个方法可以作为一个测试用例
@Before @BeforeEach 被注解的方法会在类中的每个测试方法之前执行,以便执行某些必要的先决条件,例如数据的初始化等
@BeforeClass @BeforeAll 该注解与@Before注解作用类似,区别在于用在静态测试方法
@After @AfterEach 该注释表示,每一测试方法执行后都必须执行的操作(如执行每一个测试后重置某些变量,删除临时变量等)
@AfterClass @AfterAll 与@After注解作用类似,区别在于用在静态测试方法
@Ignore @Disabled 当想暂时禁用特定的测试执行可以使用这个注解,每个被注解为@Ignore的方法将不再执行
@Runwith @ExtendWith 放在测试类名之前,用来确定测试在什么环境下运行,也可以不标注,会使用默认运行器
@Parameters @ParameterizedTest 用于使用参数化功能
@SuiteClasses 用于套件测试

2、Junit4与Junit5比较

  • JUnit 4将所有内容捆绑到单个jar文件中;
  • Junit 5由3个子项目组成,即JUnit Platform,JUnit Jupiter和JUnit Vintage;
    JUnit Platform:定义了TestEngine用于开发在平台上运行的新测试框架的API;
    JUnit Jupiter:它具有所有新的junit注释和TestEngine实现,以运行使用这些注释编写的测试;
    JUnit Vintage:支持在JUnit 5平台上运行JUnit 3和JUnit 4编写的测试。

四、注意事项

使用Junit5进行单元测试时,有可能会出现以下问题:
SpringBoot之Junit单元测试
**问题原因:**项目中引入了Junit4依赖,但是用的却是Junit5进行单元测试,且缺少junit-vintage-engine进行兼容;

解决方案:

1、直接引入以下依赖;

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

该依赖包含所有的Junit5相关依赖且引入了Junit4依赖;

2、将Junit4依赖排除且去除Junit5中的junit-vintage-engine依赖,不需要兼容其他测试版本;

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <exclusions>
   <!--去除junit4-->
       <exclusion>
           <artifactId>junit</artifactId>
           <groupId>junit</groupId>
       </exclusion>
       <!--去除兼容老的单元测试-->
       <exclusion>
           <groupId>org.junit.vintage</groupId>
           <artifactId>junit-vintage-engine</artifactId>
       </exclusion>
   </exclusions>
</dependency>

以上方案二选一均可解决以上问题;

五、结束语

赠人玫瑰,手有余香,请留下你的赞或者宝贵意见吧!

本文地址:https://blog.csdn.net/qq_38098851/article/details/112007959

相关标签: Spring家族系列