单元测试中如何使用 Mockito 框架

news/2024/12/14 9:27:21/

使用 Mockito 进行单元测试的基本框架可以分为几个步骤。Mockito 是一个强大的 Java 框架,用于创建模拟对象(mock objects),可以在不依赖外部系统或组件的情况下测试代码。以下是使用 Mockito 架构进行单元测试的通用步骤:

1. 添加依赖

首先,需要在项目的构建配置文件中添加 Mockito 和 JUnit 的依赖。如果使用的是 Maven 构建工具,那么可以在相应的配置文件中添加这些依赖。

<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>4.0.0</version><scope>test</scope>
</dependency>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>

2. 创建 Mock 对象

在测试类中,可以使用 @Mock 注解来声明模拟对象,或者使用 mock() 方法手动创建它们。

@Mock
private MyDependency myDependency;
// 或者
MyDependency myDependency = mock(MyDependency.class);

3. 使用 @InjectMocks 自动注入

如果被测类有依赖,你可以使用 @InjectMocks 注解来自动创建该类的实例,并将所有带有 @Mock 注解的对象注入到这个类的依赖中。

@InjectMocks
private MyClassToTest myClassToTest;

4. 初始化 Mocks

在较旧版本的 Mockito 中,需要显式地初始化 Mocks:

@Before
public void setUp() {MockitoAnnotations.initMocks(this);
}

对于较新的 Mockito 版本和 JUnit 5,可以使用 @ExtendWith(MockitoExtension.class) 来代替:

@ExtendWith(MockitoExtension.class)
class MyClassToTestTest {// ...
}

5. 编写测试用例

编写测试用例,使用 when() 来定义模拟行为,使用 verify() 来验证方法调用。

@Test
public void shouldReturnTrueWhenMethodReturnsTrue() {// Arrangewhen(myDependency.someMethod()).thenReturn(true);// Actboolean result = myClassToTest.methodThatUsesDependency();// AssertassertTrue(result);verify(myDependency).someMethod();
}

6. 清理资源

通常情况下,不需要特别清理资源,因为每个测试方法都会在一个全新的环境中运行。但是,如果确实需要重置模拟对象,可以使用 reset(mockObject) 方法。

7. 执行测试

最后,确保 IDE 或构建工具配置正确,以执行测试用例。JUnit 测试通常会自动识别以 Test 结尾的类和以 @Test 注解的方法。


http://www.ppmy.cn/news/1554981.html

相关文章

前端页面导出word

html-docx-js bug: vite使用html-docx.js会报错&#xff0c;点击下载上方文件替换即可 正文 npm install html-docx-js -S npm install file-saver -S<template><div id"managerReport">word内容......</div> </template><script>&l…

边界层气象:脉动量预报方程展开 | 湍流脉动速度方差预报方程 | 平均湍流动能收支方程推导

写成分量形式 原始式子&#xff1a; ∂ u i ′ ∂ t u ‾ j ∂ u i ′ ∂ x j u j ′ ∂ u ‾ i ∂ x j u j ′ ∂ u i ′ ∂ x j − 1 ρ ‾ ⋅ ∂ p ′ ∂ x i g θ v ′ θ ‾ v δ i 3 f ϵ i j 3 u j ′ v ∂ 2 u i ′ ∂ x j 2 ∂ ( u i ′ u j ′ ‾ ) ∂ x j…

satoken 后端获取用户id的原理是啥 用了前端传的那个参数

在 Sa-Token 框架中&#xff0c;后端获取用户 ID 的过程与前端传递的参数密切相关。Sa-Token 是一个基于 JWT 的轻量级权限管理框架&#xff0c;主要用于解决权限控制、登录管理等问题。具体来说&#xff0c;后端如何获取用户 ID&#xff0c;取决于你前后端如何设计以及 Sa-Tok…

vue项目通过appendChild()函数向页面上追加组件

前言&#xff1a; 此篇文章自己结合项目和文档自己理解的&#xff0c;作用于往后遇见此类开发需求时参考。 正文&#xff1a; 1、createApp() 创建一个应用程序实例 function createApp(rootComponent: Component, rootProps?: object): App 第一个参数是根组件。第二个可选…

Scratch节日作品 | 圣诞节礼物——体验节日的温馨与编程的乐趣! ❄️

今天为大家推荐一款充满节日氛围的Scratch作品——《圣诞礼物》&#xff01;这款程序不仅带来了雪花飘落、圣诞老人和麋鹿的经典场景&#xff0c;还通过编程的形式让小朋友们体验到收到礼物的喜悦。通过这款游戏&#xff0c;小朋友们能学习编程知识、了解圣诞文化&#xff0c;同…

顺序表的使用,对数据的增删改查

主函数&#xff1a; 3.c #include "3.h"//头文件调用 SqlListptr sql_cerate()//创建顺序表函数 {SqlListptr ptr(SqlListptr)malloc(sizeof(SqlList));//在堆区申请连续的空间if(NULLptr){printf("创建失败\n");return NULL;//如果没有申请成功&#xff…

VS2022 ASP.NET core Web API 示例代码解释

0. 项目结构 在创建ASP.NET Core Web API项目后&#xff0c;项目的基本结构如下&#xff1a; MyWebApiProject │ Controllers │ └── WeatherForecastController.cs │ Program.cs │ WeatherForecast.cs │ appsettings.json │ ...1. Program.cs 这个文件…

uni-app开发App注意事项

技术选择 分包目前不支持Vue3 个人选择考虑&#xff1a; 1、vue2由于官方不维护了&#xff0c;所以uniapp也不维护了。 2、vue3使用proxy&#xff0c;不支持ios9。 3、目前插件市场中 vue2开发的插件占比更大。 4、如果app页面较多&#xff0c;需要开启分包&#xff0c;但…