单元测试:无返回值接口单元测试

在平常的工作中,我们经常会用到单元测试,那么,单元测试应该怎么写呢?有什么需要注意的地方呢?

比如保存,数据是否保存成功,我们应该用单元测试怎么断言呢?像保存完成后,再去数据库做一边查询,看数据是否保存成功,那么,除过这种,我们还可以用下面的这种方式.

1:引入包:

java 复制代码
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>2.0.2-beta</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <version>2.0.9</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>2.0.0</version>
            <scope>test</scope>
        </dependency>

2:service保存方法:

java 复制代码
package test.boot.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import test.boot.dao.StudentDao;
import test.boot.service.StudentService;
import test.boot.vo.StuentVO;

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentDao studentDao;

    public void save(StuentVO vo1) {
        studentDao.save(vo1);
    }

}

3:单元测试:

java 复制代码
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.powermock.api.mockito.PowerMockito;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import test.boot.SpringbootApplicationTest;
import test.boot.dao.StudentDao;
import test.boot.service.StudentService;
import test.boot.vo.StuentVO;

import static org.mockito.Mockito.verify;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootApplicationTest.class)
public class StudentTest {

    @Mock
    private StudentDao studentDao;

    @Mock
    private StudentService studentService;

    @Test
    public void test02(){
        StuentVO vo = new StuentVO();
        vo.setName("大杜");
        vo.setPhone("12345678911");
        vo.setId(1L);
        // 先调用保存方法
        studentService.save(vo);
        // 对入参进行获取
        ArgumentCaptor<StuentVO> stuentVOArgumentCaptor = ArgumentCaptor.forClass(StuentVO.class);
        verify(studentDao).save(stuentVOArgumentCaptor.capture());
        Assert.assertEquals("姓名不一致", vo.getName(), stuentVOArgumentCaptor.getValue().getName());
    }
}

4:像保存这些接口,无返回值,但是需要进行断言,看是否保存成功,我们mock保存方法,这样可以进行判断。

不断的学习,不断的充实自己,生活才会更加的美好!2024加油!美好的风景一直在路上!

相关推荐
mqiqe9 分钟前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
伍一5111 分钟前
03-文件管理模块-一个看似简单的模块藏着多少细节
java·ruoyi·若依
gugucoding16 分钟前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
Nebula_g1 小时前
JavaSE基础语法:面向对象高级(代码中的成分)
java·开发语言·编程·javase·技术栈·高级语法
AC赳赳老秦2 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw
小强库计算机毕业设计3 小时前
SpringBoot+Vue3 学生宿舍管理系统实战
java·spring boot·后端·vue·学生宿舍管理系统
李冰然3 小时前
深入Java集合框架:HashMap源码解析(JDK 8)
java
人道领域4 小时前
【0-1的agent进阶篇】RAG:从Embedding到检索增强生成的底层逻辑
java·embedding·agent·rag
桦说编程5 小时前
盘点并发集合里那些容易误判的行为
java·后端·性能优化
IT爱学堂6 小时前
java版数据结构和算法+AI算法和技能学习指南
java·开发语言