Java单元测试JUnit
文章目录
- 前言
- 一、JUnit描述(引入Maven)
- 二、基本API+注解
- 2.1、Assert类
- 2.2、JUnit注解
- 三、普通单元测试
- 3.1、BeforeClass、AfterClass、Before、After、Test合集测试
- 四、SpringBoot单元测试
- 4.1、SpringBoot集成Junit介绍
- 4.2、实战:SpringBoot项目添加功能测试类
- 参考文章
- 资料获取
前言
博主介绍:✌目前全网粉丝4W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。
涵盖技术内容:Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。
博主所有博客文件目录索引:博客目录索引(持续更新)
CSDN搜索:长路
视频平台:b站-Coder长路
一、JUnit描述(引入Maven)
JUnit是一种Java语言的单元测试框架,它是最流行的单元测试框架之一。它提供了一些可用于编写和运行测试的API,并且可以生成测试报告。JUnit适用于所有Java语言的项目,例如Java应用程序、Java Servlet、Java EE应用程序以及Android应用程序等。
依赖版本
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>
二、基本API+注解
2.1、Assert类
Assert是JUnit框架提供的一个断言类,用于验证测试结果和预期结果是否相符。我们可以使用Assert类来编写断言代码,从而保证测试的正确性和可靠性。
- assertEquals(expected, actual):验证两个值是否相等,如果不相等则抛出AssertionError异常。
- assertNotEquals(expected, actual):验证两个值是否不相等,如果相等则抛出AssertionError异常。
- assertTrue(condition):验证给定的条件是否为true,如果不是则抛出AssertionError异常。
- assertFalse(condition):验证给定的条件是否为false,如果不是则抛出AssertionError异常。
- assertNull(object):验证给定对象是否为空(null),如果不为空则抛出AssertionError异常。
- assertNotNull(object):验证给定对象是否不为空(null),如果为空则抛出AssertionError异常。
- assertArrayEquals(expected, actual):验证两个数组是否相等,如果不相等则抛出AssertionError异常。
- assertSame(expected, actual):验证两个对象是否相等,如果不相等则抛出AssertionError异常。
- assertNotSame(notExpected, actual):验证两个对象是否不相等,如果相等则抛出AssertionError异常。
断言方法的第一个参数通常是预期值(expected),而第二个参数则是实际值(actual)。
2.2、JUnit注解
所有的注解如下:
- @Test:这是JUnit最重要的注解之一,它被用来标记测试方法。JUnit会执行所有带有@Test注解的方法,以验证代码的正确性。
- @Before:在每个测试方法执行之前该注解所标注的方法会被执行。通常,这个注解可以用于初始化测试数据和资源。
- @After:在每个测试方法执行之后该注解所标注的方法会被执行。通常,这个注解可以用于清理测试数据和资源。
- @BeforeClass:在整个测试类中只执行一次,在执行测试用例之前该注解所标注的方法会被执行,且这个方法必须是静态方法,也就是这个方法会在类加载时执行。通常,这个注解可以用于初始化静态数据和资源。
- @AfterClass:在整个测试类中只执行一次,在执行测试用例之后该注解所标注的方法会被执行,同样,这个方法必须是静态方法。通常,这个注解可以用于清理静态数据和资源。
- @Ignore:该注解表示忽略某个测试方法,不会执行该方法。通常,这个注解可以用于临时禁用某个测试用例。
- @RunWith:该注解定义测试运行器,JUnit默认使用BlockJUnit4ClassRunner作为测试运行器。如果需要使用其他运行器,可以在注解中指定。【一般配合springboot】
- @Parameters:该注解可以用于动态参数化测试方法,使测试方法能够接受不同的输入参数。
- @Rule:该注解定义测试规则(Test Rule),可以在测试方法执行前后实施某些操作,如超时控制、异常检测等。
- @ClassRule:类似于@Rule,但是粒度更大,可以对整个测试类进行规则控制。
三、普通单元测试
3.1、BeforeClass、AfterClass、Before、After、Test合集测试
说明:主要研究下所有单元测试注解的生命周期。
- BeforeClass、AfterClass:整个完整测试过程中各自只执行一次。【类级别】
- Before、After:对于每一个Test方法都会提前或最终执行一次。【方法级】
package com.changlu;
import org.junit.*;public class MainTest {@BeforeClasspublic static void beforeClass() {System.out.println("BeforeClass");}@AfterClasspublic static void afterClass() {System.out.println("afterClass");}@Beforepublic void before() {System.out.println("-----------");System.out.println("before");}@Afterpublic void After() {System.out.println("After");System.out.println("-----------");}@Testpublic void testCon1() {//断言验证为true,测试通过Assert.assertTrue(true);System.out.println("testCon1");}@Testpublic void testCon2() {//断言验证为true,测试通过Assert.assertTrue(true);System.out.println("testCon2");}
}
运行结果:
四、SpringBoot单元测试
4.1、SpringBoot集成Junit介绍
Springboot集成JUnit写单元测试类需要使用RunWith注解,这个注解需要一个值,测试运行器。
测试运行器(Test Runner)是JUnit框架提供的一个核心组件,用于执行测试类中的测试方法并生成测试报告。JUnit提供了多个测试运行器,不同的运行器可以根据不同的需求来选择使用。
- JUnit4:JUnit4是JUnit框架的主流版本,支持使用注解方式进行测试。我们一般会选择使用@RunWith(JUnit4.class)运行器来执行测试用例。
- SpringRunner:SpringRunner是Spring Boot Test框架中提供的测试运行器,用于执行集成测试和端到端测试等。可以使用@RunWith(SpringRunner.class)运行器来启动Spring Boot上下文环境,并进行测试。
- Parameterized:Parameterized是JUnit提供的一个参数化测试运行器,可以让我们在单元测试中重复运行相同的测试方法,并对方法参数进行变量化处理。
- Theories:Theories是JUnit提供的一个更加高级的参数化测试运行器,可以生成随机数据、枚举值、自定义输入等多种方式来测试方法的正确性。
- Suite:Suite运行器可以将多个测试类组合成一组测试用例,方便批量执行和管理测试用例。
4.2、实战:SpringBoot项目添加功能测试类
引入JUnit依赖:
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>
import com.team.order.FoodOrderSpringBootApplication;
import com.team.order.service.CaipinService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;/*** @description 创建测试类单元测试* @date 2024/4/19 15:33*/
@SpringBootTest(classes = FoodOrderSpringBootApplication.class)
@RunWith(SpringRunner.class)
public class MainTest {@Autowiredprivate CaipinService caipinService;@Testpublic void testCaipin() {System.out.println(caipinService.selectList(null));}}
运行结果如下:
参考文章
[1]. JUnit单元测试:https://blog.csdn.net/weixin_44084024/article/details/130204119
[2]. 【SpringBoot应用篇】SpringBoot集成JUnit单元测试:https://blog.csdn.net/qq_45297578/article/details/118935974
资料获取
大家点赞、收藏、关注、评论啦~
精彩专栏推荐订阅:在下方专栏👇🏻
- 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
- 开源项目Studio-Vue—校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
- 学习与生活-专栏:可以了解博主的学习历程
- 算法专栏:算法收录
更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅