当前位置: 首页 > news >正文

BeforeEach与AfterEach注解的使用

        <!--单元测试--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.7.0</version><scope>test</scope></dependency>

在 JUnit 5(Jupiter)中,@BeforeEach 和 @AfterEach 是两个常用的生命周期注解,用于在测试方法执行前后执行特定的代码,主要用于资源的初始化和清理工作。

1. @BeforeEach

  • 作用:被该注解标记的方法会在每个测试方法执行之前运行。
  • 适用场景
    • 初始化测试所需的对象(如创建数据库连接、初始化集合等)。
    • 重置测试状态,确保每个测试方法都在相同的初始条件下执行。
  • 注意事项
    • 该方法必须是 public void 类型,且不能有参数。
    • 每个测试类中可以有多个 @BeforeEach 方法,但其执行顺序不固定(除非使用 @Order 注解指定)。

2. @AfterEach

  • 作用:被该注解标记的方法会在每个测试方法执行之后运行。
  • 适用场景
    • 清理测试资源(如关闭数据库连接、删除临时文件等)。
    • 释放内存或重置共享状态,避免测试方法之间相互影响。
  • 注意事项
    • 同样要求是 public void 类型,无参数。
    • 即使测试方法执行失败(抛出异常),@AfterEach 方法依然会执行。
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;public class ExampleTest {// 测试前初始化@BeforeEachvoid setUp() {System.out.println("执行@BeforeEach:初始化资源...");}// 测试方法1@Testvoid testMethod1() {System.out.println("执行测试方法1");}// 测试方法2@Testvoid testMethod2() {System.out.println("执行测试方法2");}// 测试后清理@AfterEachvoid tearDown() {System.out.println("执行@AfterEach:清理资源...");System.out.println("-----");}
}

输出结果:

执行@BeforeEach:初始化资源...
执行测试方法1
执行@AfterEach:清理资源...
-----
执行@BeforeEach:初始化资源...
执行测试方法2
执行@AfterEach:清理资源...
-----

总结

  • @BeforeEach 和 @AfterEach 是每个测试方法级别的生命周期管理,适合处理与单个测试相关的资源。
  • 若需要在所有测试方法执行前后只执行一次初始化 / 清理(如创建数据库表、销毁表),可使用 @BeforeAll 和 @AfterAll(这两个注解标记的方法必须是静态方法)。
http://www.dtcms.com/a/356003.html

相关文章:

  • React学习教程,从入门到精通, ReactJS - 安装:初学者指南(3)
  • iPhone17新品曝光!未来已来主题发布会即将登场
  • CSS入门学习
  • Vim 相关使用
  • Dify 从入门到精通(第 61/100 篇):Dify 的监控与日志分析(进阶篇)
  • 笔记本电脑蓝牙搜索不到设备-已解决
  • LoRA加入嵌入层、及输出头解析(63)
  • 实测阿里图像编辑模型Qwen-Image-Edit:汉字也能无痕修改(附实测案例)
  • 【 MYSQL | 基础篇 函数与约束 】
  • 响应式编程之Flow框架
  • cmd 中设置像 linux 一样设置别名(alias)
  • Xshell自动化脚本大赛实战案例及深度分析
  • 谷歌RecLLM,大模型赋能对话推荐算法系统
  • TUN模式端口冲突 启动失败如何解决?
  • hintcon2025No Man‘s Echo
  • 【Web安全】反序列化安全漏洞全解析:从原理到实战测试指南
  • Vue3 Pinia 中 store.$dispose()的用法说明
  • Vue3组件加载顺序
  • vue项目运行后自动在浏览器打开
  • 使用npm init vue@latest 基于vite创建的vue项目
  • 特色领域数据集:以数据之力,赋能多元行业发展
  • three 点位图
  • HT338立体声D类音频功放
  • 消息推送与 WebSocket 学习
  • Node.js终极文本转图指南
  • 基于SpringBoot的学科竞赛管理系统
  • 请详细介绍RuntimeInit.java中的MethodAndArgsCaller类
  • 架构设计——云原生与分布式系统架构
  • nginx的启动 、 停止、重载命令
  • node,nvm,vscode下载安装教程(windows版本)