首页 > 其他分享 >11

11

时间:2024-11-13 15:42:10浏览次数:1  
标签:11 request departmentId org department import response

为了对 isGlobalQuery 方法进行单元测试,我们需要使用一个单元测试框架,如 JUnit,并结合 mocking 框架(如 Mockito)来模拟依赖对象的行为。下面是一个详细的单元测试示例,假设我们使用的是 JUnit 5 和 Mockito。

1. 引入依赖

首先,确保你的项目中已经引入了 JUnit 和 Mockito 的依赖。如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:

<dependencies>
    <!-- JUnit 5 -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
    </dependency>

    <!-- Mockito -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>3.6.28</version>
        <scope>test</scope>
    </dependency>

    <!-- Mockito for JUnit 5 -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>3.6.28</version>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 编写单元测试

假设 DepartmentServiceImpl 是我们要测试的类,我们可以编写如下单元测试:

import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import com.example.service.DepartmentServiceImpl;
import com.example.mapper.DepartmentMapper;
import com.example.request.QueryDepartmentGlobalQueryRequest;
import com.example.response.QueryDepartmentGlobalQueryResponse;
import com.example.entity.Department;
import com.example.utils.RespUtils;
import com.example.enums.ErrorCodeEnum;

public class DepartmentServiceImplTest {

    @Mock
    private DepartmentMapper departmentMapper;

    @InjectMocks
    private DepartmentServiceImpl departmentService;

    @BeforeEach
    public void setUp() {
        MockitoAnnotations.openMocks(this);
    }

    @Test
    public void testIsGlobalQuery_DepartmentExists_GlobalQueryTrue() {
        // 准备数据
        String departmentId = "123";
        Department department = new Department();
        department.setDepartmentId(departmentId);
        department.setGlobalQuery(true);
        department.setQueryEffectiveDate(new Date());
        department.setQueryPermanentFlag(true);

        // 模拟行为
        when(departmentMapper.selectOneByExample(any())).thenReturn(department);

        // 执行方法
        QueryDepartmentGlobalQueryRequest request = new QueryDepartmentGlobalQueryRequest();
        request.setDepartmentId(departmentId);
        QueryDepartmentGlobalQueryResponse response = departmentService.isGlobalQuery(request);

        // 断言结果
        assertNotNull(response);
        assertTrue(response.getGlobalQueryFlag());
        assertEquals(department.getQueryEffectiveDate(), response.getEffectiveDate());
        assertTrue(response.getPermanentFlag());
    }

    @Test
    public void testIsGlobalQuery_DepartmentExists_GlobalQueryFalse() {
        // 准备数据
        String departmentId = "123";
        Department department = new Department();
        department.setDepartmentId(departmentId);
        department.setGlobalQuery(false);
        department.setQueryEffectiveDate(new Date());
        department.setQueryPermanentFlag(true);

        // 模拟行为
        when(departmentMapper.selectOneByExample(any())).thenReturn(department);

        // 执行方法
        QueryDepartmentGlobalQueryRequest request = new QueryDepartmentGlobalQueryRequest();
        request.setDepartmentId(departmentId);
        QueryDepartmentGlobalQueryResponse response = departmentService.isGlobalQuery(request);

        // 断言结果
        assertNotNull(response);
        assertFalse(response.getGlobalQueryFlag());
        assertEquals(department.getQueryEffectiveDate(), response.getEffectiveDate());
        assertTrue(response.getPermanentFlag());
    }

    @Test
    public void testIsGlobalQuery_DepartmentNotExists() {
        // 准备数据
        String departmentId = "123";

        // 模拟行为
        when(departmentMapper.selectOneByExample(any())).thenReturn(null);

        // 执行方法
        QueryDepartmentGlobalQueryRequest request = new QueryDepartmentGlobalQueryRequest();
        request.setDepartmentId(departmentId);
        QueryDepartmentGlobalQueryResponse response = departmentService.isGlobalQuery(request);

        // 断言结果
        assertNotNull(response);
        assertEquals(ErrorCodeEnum.DEPARTMENT_NOT_EXIST.getCode(), response.getCode());
    }

    @Test
    public void testIsGlobalQuery_GlobalQueryExpired() {
        // 准备数据
        String departmentId = "123";
        Department department = new Department();
        department.setDepartmentId(departmentId);
        department.setGlobalQuery(true);
        department.setQueryEffectiveDate(Date.from(Instant.now().minus(1, ChronoUnit.DAYS)));
        department.setQueryPermanentFlag(false);

        // 模拟行为
        when(departmentMapper.selectOneByExample(any())).thenReturn(department);

        // 执行方法
        QueryDepartmentGlobalQueryRequest request = new QueryDepartmentGlobalQueryRequest();
        request.setDepartmentId(departmentId);
        QueryDepartmentGlobalQueryResponse response = departmentService.isGlobalQuery(request);

        // 断言结果
        assertNotNull(response);
        assertFalse(response.getGlobalQueryFlag());
        assertEquals(department.getQueryEffectiveDate(), response.getEffectiveDate());
        assertFalse(response.getPermanentFlag());
    }
}

3. 测试说明

  • testIsGlobalQuery_DepartmentExists_GlobalQueryTrue: 测试部门存在且 globalQuerytrue 的情况。
  • testIsGlobalQuery_DepartmentExists_GlobalQueryFalse: 测试部门存在且 globalQueryfalse 的情况。
  • testIsGlobalQuery_DepartmentNotExists: 测试部门不存在的情况。
  • testIsGlobalQuery_GlobalQueryExpired: 测试 globalQuery 有效期限已过期的情况。

4. 运行测试

你可以使用 IDE(如 IntelliJ IDEA 或 Eclipse)中的内置工具运行这些测试,也可以通过命令行运行:

mvn test

这将运行所有的单元测试,并输出测试结果。

标签:11,request,departmentId,org,department,import,response
From: https://www.cnblogs.com/lmzzr24/p/18544103

相关文章

  • AT_agc011_d [AGC011D] Half Reflector 题解
    用\(1\)表示A,\(0\)表示B,观察进行一次操作后字符串会发生什么变化。首先当第一个数为\(1\)时,只会将第一个数变为\(0\)。对于剩下的情况,手玩一下可以发现会将第一个数移到末尾,然后将所有数异或\(1\)。先考虑暴力怎么做,可以记一个指针\(i\)和当前应该给全体数异或的值\(......
  • 2024-11-13:求出所有子序列的能量和。用go语言,给定一个整数数组nums和一个正整数k, 定义
    2024-11-13:求出所有子序列的能量和。用go语言,给定一个整数数组nums和一个正整数k,定义一个子序列的能量为子序列中任意两个元素之间的差值绝对值的最小值。找出nums中长度为k的所有子序列的能量和,对结果取模10^9+7后返回。输入:nums=[1,2,3,4],k=3。输出:4。解释:nums......
  • 2024年11月13日Github流行趋势
    项目名称:dockur/windows项目维护者:@kroese@renovate@hellodword@luisgmuniz@arisudesu项目介绍:在Docker容器内运行Windows。项目star数:27,382项目fork数:1,909项目名称:exo-explore/exo项目维护者:@AlexCheema@blindcrone@DevEmilio96@GaetanLepage@ianpaul10......
  • CW 模拟赛 11.13 个人记录
    T1算法暴力暴力思路是显然的,观察到并查集可以\(\mathcal{O}(n\logn)\)的维护题目中求的信息对于\(50\%\)的数据显然可以通过耗时\(10\rm{min}\),正常正解暴力疑似就是正解?????代码这个题只要挂了我就趋势,但是看这样子来说应该是\(T1\)放了简单题不挂......
  • [2024.11.13]NOIP 模拟赛
    T1怎么自然溢出被卡了啊(upd:不是哈希被卡了,是大数据里塞小数据被坑了)T2怎么看不清题目要求啊T3怎么都记得欧拉定理啊T4怎么暴力全机房就我一个写挂了啊……赛时T1题目上说是背包,但是数据范围给到了\(2^{18000}\),所以一眼是结论题。题目上\(a_i\)全部互质的条件很独特,所以我......
  • P11071 「QMSOI R1」 Distorted Fate题解
    题意:给定一个序列,给定两种操作:将一个区间异或上一个给定的值。给定\(l,r\)求\[{\large(\sum_{i=l}^r\bigcup_{j=l}^iA_j)\bmod2^{30}}\]\(0\lea_i,x<2^{30}\),\(1\lel\ler\len\)思路由于操作数以及区间过大,一位一位地去模拟肯定是不行的。因此考虑去离线......
  • 2024-11-13 uniapp自定义全局弹窗并可以通过uni来调用【转载】
    新建三个文件: dialog.js:exportdefault{/*链接处理*/getLink(params){leturl="/components/dialog/index";if(params){letparamStr="";for(letnameinparams){param......
  • 每日新闻掌握【2024年11月12日 星期二】
    2024年11月12日星期二 农历十月十二 大公司/大事件 人形机器人产业链捷报频传,机构指出产业链年底有望迎来定点特斯拉CEO埃隆·马斯克透露,特斯拉正在改进Optimus机器人的设计,以解决生产过程中的关键瓶颈问题,“Optimus已经在工厂里执行一些任务,其能力范围正在迅速扩......
  • 每日新闻掌握【2024年11月11日 星期一】
    2024年11月11日星期一 农历十月十一 大公司/大事件 国产新机上市,老款iPhone跌至半价近期,国产品牌新机先后上市,掀起新一轮换机潮。对于本土品牌新机上新,苹果则面临着巨大市场竞争压力。IDC最新数据显示,2024年第三季度,苹果凭借年度新品的上市,以15.6%的市场份额重返中......
  • LCR 011. 连续数组(中等)(主站525)
    https://leetcode.cn/problems/A1NYOS/https://leetcode.cn/problems/contiguous-array/难度:☆☆☆☆题目:给定一个二进制数组nums,找到含有相同数量的0和1的最长连续子数组,并返回该子数组的长度。示例:输入:nums=[0,1]输出:2说明:[0,1]是具有相同数......