源:https://blog.csdn.net/z199172177/article/details/79731952
评:
重构代码时一套完善的测试工作能给我们莫大的帮助,下面时我使用Mockito做的Demo,目的是替换掉Dubbo 的相关接口。供不熟悉Mockito 的同学做参考。
junit:junit:4.11
org.springframework:spring-test:3.2.4.RELEASE
org.mockito:mockito-all:1.10.19
jdk1.8
BaseTest
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ContextConfiguration(locations = {"classpath:spring/application.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class BaseTest {
@Before
public void setup() {
/** 如果同时需要注入和mock注入,SpringJUnit4ClassRunner的前提下,注入mock */
MockitoAnnotations.initMocks(this);
}
@Test
public void test() {
Assert.assertEquals(1, 1);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MockTestDemo
import cn.idongjia.makalu.biz.PostBO;
import cn.idongjia.makalu.domain.post.MakaluUser;
import cn.idongjia.makalu.manager.ClanManager;
import cn.idongjia.makalu.pojo.post.Post;
import cn.idongjia.makalu.repo.PostRepo;
import cn.idongjia.makalu.service.PostService;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.Spy;
import javax.annotation.Resource;
import java.util.Optional;
/*
* service 被标记了 @InjectMocks , 在 setup 方法中 执行 MockitoAnnotations.initMocks(this); 的时候,会将标记了
* @Mock或 @Spy 的属性注入到 service 中。
* 如果是 @Mock, 那就是通常的方式,service里面的provider完全被Mock实例替换,所有的调用都是针对Mock生成类的。
* 如果是 @Autowired 加 @Spy , 那么对于定制了返回值的会调用 Mock实例,否则会调用真实注入的属性。
*/
public class MockTestDemo extends BaseTest{
@InjectMocks
@Resource
PostService postService;
@InjectMocks
@Spy
@Resource
private PostBO postBO;//注入到postService 中
@InjectMocks
@Spy
@Resource
private PostRepo postRepo;//注入到postRepo 中
//Dubbo接口
@Mock
private ClanManager clanManager;//注入到postRepo 中
@Test
public void test() {
System.out.println("======***************");
/**
* 构造一个自己的对象。
*/
User mu = new User();
mu.setUsername("zzz");
Optional<User> user = Optional.of(mu);
// 设置模拟对象的返回预期值
Mockito.when(clanManager.takeUser(21L)).thenReturn(user);
Post post = this.postService.get(5L);
System.out.println(String.format("使用mock后的结果:%s", post.getUsername()));//修改后的结果值
System.out.println("======***************");
}
相关推荐
内容概要:参考Mockito官方API文档,实践框架每个特性。 适合人群:Mockito入门人员以及想全面...能学到什么:“Mockito 4.6.0 + Junit 5”的组合编程。 使用建议:使用前安装好Maven及Java即可,推荐使用VSCode编辑。
本篇文章主要介绍了基于Springboot+Junit+Mockito做单元测试的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
maven+spring+mybatis+mysql+junit jar项目框架搭建
hibernate+spring+junit+ant+mysql 小实例。能够当模板
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...
spring3 + mybatis3 + junit4 可运行项目示例 可进行单元测试,集成测试。。。
spring+springmvc+mybatis+maven+junit的整合,适合初学者
3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的封装,spring-tx里没有JotmFactoryBean.class,我在jar里添加了类) 2)Demo 导入说明: 1.Eclipse ...
Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包 这是所有的架包 压箱的宝物 以后你们就不用下载了
hibernate+spring +ant+junit 1.整合hibernate+spring 2.ant自动生成xml文件和api 3.junit测试hql语句 4.c标签写的前台分页程序
资源含有Junit4.12.jar和mockito的jar包以及mockito的文档
maven+spring+mybatis+junit实例
使用spring 和junit的一个小案例,用来了解如何使用spring和junit4。入门级
spring+springMVC+mybatis+maven+junit+mysql
包含 Junit + Hamcrest + Mockito 单元测试涉及到的三个jar包,分别是junit.jar、hamcrest-2.2.jar、mockito-core-3.2.4.jar
通过Spring集成单元测试,以后测试service层内容时,就不用getBean()来获得Service层对象了
免费了,spring4+JUnit简单测试,注解组件扫描和xml显示组件扫描,我自己都忘了里面有什么了。
Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf
毕业设计&课设--基于Structs+Hibernate+Spring+mahout+bootstrap+junit
改代码是我的我的一个项目自己写完后自测所以就写了这个junit的单元测试类,以及可能会遇到的一些问题,以及其中的一些经验,项目用的是spring + mybatis。我写的这个测试类基本概括了单元测试的基本用法,只要按照...