java中PowerMockito模拟方法内new对象实例

本篇内容主要讲解“java中PowerMockito模拟方法内new对象实例”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中PowerMockito模拟方法内new对象实例”吧!

创新互联公司从2013年成立,先为北海等服务建站,北海等地企业,进行企业商务咨询服务。为北海企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

在做单元测试中有时候需要对方法内new出来的对象进行隔离,这是我们需要使用PowerMockito。

  1. 添加依赖


            org.powermock
            powermock-module-junit4
            1.7.4
            test
        
        
            org.powermock
            powermock-api-mockito
            1.7.4
            test
        
        
            org.mockito
            mockito-core
            1.10.19
            test
        

注意:版本要对应一致,不同的版本可能出现启动失败!

  1. 被测试类

@Slf4j
@Component
public class UserService {
	@Autowired
	private UserMapper userMapper;
	
	public User userCreate(String name, String password) throws BusinessException {
		User user = userMapper.query(name, password);
		if(user == null){
			user = new User();
			user.setName(name);
			user.setPassword(password);
			user.setGroup(1);
			user.setCreateTime(new Date());
			TokenApi tokenApi = new TokenApi();//测试时需要隔离此类,此类依赖其他服务!
			
			try {
				user.setToken(tokenApi.getToken());
			} catch (Exception e) {
				throw new BusinessException("-2","获取token失败");
			}
			try {
				userMapper.create(user);
			} catch (Exception e) {
				throw new BusinessException("-1","系统异常");
			}
			
		}
		return user;
	}
}
  1. 测试类

@RunWith(PowerMockRunner.class)
@PrepareForTest({UserService.class})//此注解内配置的是需要mock的new对象代码所在的类
public class UserServiceTest {

	@InjectMocks
	private UserService userService;
	@Mock
	private UserMapper userMapper;
	private TokenApi tokenApi;
	
	@Test
	public void userCreate(){
		
		String name = "xiaoming";
		String password = "000000";
		when(userMapper.query(name, password)).thenReturn(null);
		tokenApi = PowerMockito.mock(TokenApi.class);
		try {
			PowerMockito.whenNew(TokenApi.class).withNoArguments().thenReturn(tokenApi);
		} catch (Exception e) {
			e.printStackTrace();
		}
		PowerMockito.when(tokenApi.getToken()).thenReturn("11111111");
		User user = userService.userCreate(name, password);
		assertEquals(name,user.getName);
		assertEquals("11111111",user.getToken());
	
	}
}

when() 跟 PowerMockito.when() 是两个不同的方法!when() = Mockito.when()

到此,相信大家对“java中PowerMockito模拟方法内new对象实例”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享标题:java中PowerMockito模拟方法内new对象实例
文章位置:http://hbruida.cn/article/ppdoeg.html