目录

什么是mock?

mock有哪些工具?

以下是关于spring测试的相关,详细可以查看:

https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/testing.html#testing-introduction

代码下载:https://gitee.com/hong99/spring/issues/I1N1DF

实现源码

注:在项目base_spring 下面新增包

项目结构

MockMvc(调用控制器层)

代码下载:https://gitee.com/hong99/spring/issues/I1N1DF

最后


什么是mock?

mock指的是通过模拟数据来使程序完成流程的运行,简单说一句就是自己造数据模拟流程。

mock有哪些工具?

JUnit

参考:https://junit.org/junit5/

TestNG

参考:https://testng.org/doc/

AssertJ

参考:https://joel-costigliola.github.io/assertj/

MockObjects

参考:http://www.mockobjects.com/

Mockito

参考:https://site.mockito.org/

EasyMock

参考:https://easymock.org/

JMock

参考:https://jmock.org/

DbUnit

参考:https://www.dbunit.org/

Testcontainers

参考:https://www.testcontainers.org/

Grinder

参考:https://sourceforge.net/projects/grinder/

SpringMockK

參考:https://github.com/Ninja-Squad/springmockk

spring自带(spring-test):

参考:

https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/testing.html

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/mock/web/package-summary.html

https://blog.csdn.net/u013553309/article/details/89680632?biz_id=102&utm_term=spring%20mock&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-89680632&spm=1018.2118.3001.4187

当然还有很多工具....你确定你学得完?还是找几个常用的用吧,毕竟这些只是辅助,大部分都大同小异,可以自行了解需要的。建议用spring自带+junit最多再加一个testNG

以下是关于spring测试的相关,详细可以查看:

https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/testing.html#testing-introduction

代码下载:https://gitee.com/hong99/spring/issues/I1N1DF

实现源码

 注:在项目base_spring 下面新增包

项目结构

ReflectionTestUtils

为spring自带的一个mock工具,当然只是冰山一角,需要更详细了解可以上官网。

com.hong.spring.junit.bean.Student

package com.hong.spring.junit.bean;
/**** 功能描述:学生** @param:* @return:* @auther: csh* @date: 2020/7/22 18:53*/
public class Student {
private Integer age;
private String name;
private Integer id;public void setAge(Integer age) {
this.age = age;}
public Integer getAge() {
return age;}public void setName(String name) {
this.name = name;}
public String getName() {
return name;}public void setId(Integer id) {
this.id = id;}
public Integer getId() {
return id;}@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
", id=" + id +
'}';}
}

com.hong.spring.junit.UserService

package com.hong.spring.junit;import com.hong.spring.junit.bean.Student;
import org.springframework.beans.factory.annotation.Autowired;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;/*** @Auther: csh* @Date: 2020/10/12 17:17* @Description:用户服务*/
public class UserService{@Autowiredprivate String userName;@Autowiredprivate Student student;@PostConstructprivate void start(){System.out.println("start:"+userName);System.out.println("start:"+student);}@PreDestroyprivate void stop(){System.out.println("stop:"+userName);System.out.println("stop:"+student);}
}

MockMvc(调用控制器层)

MockMvc为spring自带mock工具可以通过该功能模拟相关的请求api;

junit.UserServiceTest

package junit;import com.hong.spring.junit.UserService;
import com.hong.spring.junit.bean.Student;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;/*** @Auther: csh* @Date: 2020/10/12 17:21* @Description:测试:使用ReflectionTestUtils解决依赖注入*/
public class UserServiceTest {/**** 功能描述:通过ReflectionTestUtils测试** @param:* @return:* @auther: csh* @date: 2020/10/12 17:23*/@Testpublic void testUserService(){UserService userService = new UserService();ReflectionTestUtils.setField(userService,"userName","hong");Student student = new Student();student.setAge(100);student.setId(1);student.setName("hong99");ReflectionTestUtils.setField(userService,"student",student);ReflectionTestUtils.invokeMethod(userService,"start");ReflectionTestUtils.invokeMethod(userService,"stop");}
}

运行结果

start:hong
start:Student{age=100, name='hong99', id=1}
stop:hong
stop:Student{age=100, name='hong99', id=1}

junit.MockControllerTest

注:关于控制器是原已有建议下载原码学习!

/*** @Auther: csh* @Date: 2020/10/13 10:14* @Description:通过mock请求控制器*/
public class MockControllerTest {@Testpublic void testHomePage() throws Exception {HomeController controller = new HomeController();MockMvc mockMvc = standaloneSetup(controller).build();mockMvc.perform(get("/")).andExpect(view().name("home"));}
}

运行结果

2020-10-13 10:16:32,577 [main] INFO : 进入了首页!
2020-10-13 10:16:32,582 [main] ERROR: error进入了首页!

代码下载:https://gitee.com/hong99/spring/issues/I1N1DF

最后

在真实工作中,与第三方联调是家常便饭,但是有时候真的人家的接口会晚几天才提供过来,总不能一直等着,通过mock自己模拟一些数据进行测试先把自己的流程跑通,后面再统一联调,而spring提供的mock也很多,ReflectionTestUtils只是其中的一种,可以看看官方文档统一尝试,是一种提升工作效率和质量不错的工具,推荐。如有疑问,请私聊作者或下方留言,谢谢!

参考文章:

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/util/ReflectionTestUtils.html

https://www.lagou.com/lgeduarticle/125128.html

https://www.baeldung.com/spring-reflection-test-utils

https://www.tianmaying.com/tutorial/JunitForSpringBoot

spring进行mock测试相关推荐

  1. Spring MVC如何测试Controller(使用springmvc mock测试)

    在springmvc中一般的测试用例都是测试service层,今天我来演示下如何使用springmvc mock直接测试controller层代码. 1.什么是mock测试? mock测试就是在测试过 ...

  2. dubbo服务接口如何mock_小程聊微服务-基于dubbo的mock测试系统

    一.说在前面 基于微服务或者SOA的自动化测试系统每个公司都有自己的特有的,我今天就主要介绍一下,我们研发的一套mock测试系统. 二.目前面临的问题 1.测试人员面临的测试问题 我公司目前用的是基于 ...

  3. Mock测试详细介绍及使用

    最近在写一个微服务的项目,项目中使用了Mock.Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开. 定义 1. ...

  4. JAVA测试类注解以及Mock测试

    我们在项目中,经常要编写一个测试类XXXXXTest,其中一般会用到以下注解: 一.常用注解 1. @RunWith(PowerMockRunner.class) JUnit将会调用@RunWith中 ...

  5. Java单元测试之模拟利器-使用PowerMock进行Mock测试

    首页 国产Linux Linux命令 openSUSE ArchLinux Slackware FreeBSD Ubuntu CentOS Fedora Debian PHP教程 在线教程 登录 注册 ...

  6. 带你读懂mock测试——单元测试实践篇

    1.什么是mock测试? Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法. 2.为什么要进行Mock测试? ...

  7. 我们用到的3种Mock测试方案​

    Mock  这个词对于测试人员来说并不陌生,当我们要测试的接口 A 依赖接口 B ,可 B 无法满足我们的测试需求时,需要 Mock 一下接口 B,来测试 A.当前端和服务端并行开发时,如果服务端接口 ...

  8. SpringBoot Web项目Mock测试

    1.环境准备 Spring-boot官方给我们提供了测试用的场景启动器:spring-boot-starter-test 如果我们用IDEA创建一个spring项目,默认会给我们在pom里面引入这个依 ...

  9. Spring Boot Mock

    Spring MockMvc 今天来学习下如何使用Spring Mvc来对controller定义的Restful API进行集成测试.MockMVC 类是Spring test 框架的一部分,因此不 ...

最新文章

  1. 拿来主义——老外写的系统统计脚本
  2. 读懂python代码_读懂花里胡哨的14行Python代码!
  3. 错误代码1500什么意思_啊早安打工人是什么梗???
  4. 如何自定义Hibernate脏检查机制
  5. 前端学习(902):this指向问题
  6. stm32 PWM输入捕获
  7. C#与Matlab混合编程中遇到的“MathWorks.MATLAB.NET.Arrays.MWNumericArray”的类型初始值设定项引发异常。
  8. redhat as4 上安装 MySQL5
  9. paip.mysql 导入出错,提示语法错误.txt
  10. python求梅花数_《梅花易数》又叫梅花数
  11. 系统设计.如何设计一个秒杀系统(完整版)
  12. shell命令查阅端口信息_Powershell 执行外部命令
  13. 【收藏防丢】rar压缩包忘记密码怎么办?手把手教你轻松解决
  14. 计算机mc mr,【科普贴】计算器上的GT、CE、AC、MU、MC、MR、M-、M+都是什么?
  15. py4j开发配置idea+python
  16. vue中的几个动效网站
  17. signature=dd4c0ce5ed341fbfafa07eb3d3275ec3,SIGNATURE-FREE BUFFER OVERFLOW ATTACK BLOCKER
  18. 关于有偿提供拼图响应式后台的通知
  19. Android studio模拟器尺寸和真机不一样的原因
  20. 正则表达式re模块用法总结

热门文章

  1. Kali-工具-HTTrack使用
  2. 简单的入门Android开发和Java语言基础[图]
  3. 按分类分割EXCEL文件
  4. 【转载】IDEA如何将Git回退到某个版本
  5. 【多线程和并发】Java中的线程池的实现原理
  6. linux xfs文件系统磁盘空间lv扩展
  7. python标准库random的方法randint_Python标准库Random
  8. ubuntu 14.04 nVidia显卡花屏
  9. 牛客网python刷题_牛客网刷题
  10. 基于java订单管理系统_基于JAVA技术的订单管理系统(DOC毕业设计论文)