BeanMock的使用介绍与说明

使用场景

Mockito是java单元测试很常用的一个工具。但是在classA -> classB -> classC 的场景中,假如需要对classA进行单元测试,需要针对ClassC的方法返回不同结果进行验证,而又不希望对classB进行mock。 这个时候一般的解决方案有两种:

1、使用反射的层层调用(但是对于更深层的调用会显得很繁琐,并且需要手工恢复场景,否则会污染其他测试场景,因为spring上下文是全局的,除非使用DirtesContext)

2、改用powerMock

为了更好的接口上述的高频场景,对mockito和spring test进行了扩展,支持注解式的嵌套对象mock 代码中有完整的例子提供运行。

@RunWith(SpringBeanMockTestClassRunner.class) // 使用SpringJUnit4ClassRunner的扩展Runner @ContextConfiguration(locations = "classpath:applicationContext.xml") public class LoginServiceTest {

@MockBean("userService") //标注当前属性需要输入的目标bean(也就是说userService中有configurationService这个属性,并且是通过spring注入的) private ConfigurationService configurationService;

@Resource private LoginService loginService;

@Test public void test(){ Mockito.when(configurationService.userCache()).thenReturn(true);
User user = loginService.login(); assertEquals("cache",user.getSource()); }

@Test public void testFromDb(){ User user = loginService.login(); assertEquals("db",user.getSource()); } 由于相关代码比较少,所以并没有打包成jar包,而是直接提供源码,使用时直接引用源码

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java单元测试

Java单元测试1.概述java单元测试是最小的功能单元测试代码,单元测试就是针对单个java方法的测试。java程序的最小功能单元是方法。main方法进行测试的缺点:只能有一个main()方法,不能把测试代码分离出来无法打印出测试结果和期望结果.例如:expected:

PowerMock单元测试

   在Java(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Flib.csdn.net%2Fbase%2Fjavaee)程序的单元测试中常用的mock工具有Mockito和EasyMock。但是这两种mock工具都无法实现对静态、final、私有方法或类的mock。因此有了功能强

SpringCloud单元测试【六】

SpringCloud的单元测试主要是依靠Mock以及Mockito,所以我们需要对Mock以及Mockito有一定的认识。一、为什么要用MockMvc  可能我们在测试控制层的代码都是启动服务器,在浏览器中输入URL,然后开始测试是否达到预期效果,发生错误的话,修改相关代码并重启服务器再次进行测试。分析一下这个过程,启动服务器打开

RPC原理及实现

1简介RPC的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。2调用分类RPC调用分以下两种:同步调用客户方等待调用执行完成并返回结果。

Mockito模拟进行单元测试

1.1Mockito是什么?    MOCK意思是模拟的意思,主要被用来进行数据的人工组织,不会真正地调用第三方服务器,类似redis,mysql等都不会调用,也不用关心数据底层是如何进行处理的,我们要做的只是将本单元的逻辑进行单元测试,验证数据的逻辑处理性,而其中mock较好的框架就是Mockito。    Mockito是mocking

BeanMock的使用介绍与说明 - HelloWorld