`
lbyzx123
  • 浏览: 468241 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

PowerMock测试service

    博客分类:
  • java
阅读更多

 

service层调用
public class IUserServiceTest {
		
		@Autowired
		private IUserService userService;
		
		@Test
		public void testGetUser4UT8() throws Exception {
			IUserDao userDao = PowerMockito.mock(IUserDao.class);
			UserEntity expectedEntity = new UserEntity();
			expectedEntity.setId(1L);
			expectedEntity.setName("test");
			IUserService userServiceImpl = org.springframework.test.util.AopTestUtils.getTargetObject(userService);
			Field field = userServiceImpl.getClass().getDeclaredField("userDao");
			field.setAccessible(true);
			field.set(userServiceImpl, userDao);
			PowerMockito.when(userDao.get(Mockito.any())).thenReturn(expectedEntity);
			UserDto userDto = userServiceImpl.getUser(1L);
		}
	}

service依赖dao,可以mock一下dao,不用访问数据库,即覆盖service的逻辑。
service中调用了dao层的get方面,可以假定dao层get方法的返回值为expectedEntity(即:PowerMockito.when(userDao.get(Mockito.any())).thenReturn(expectedEntity);、
),当调用service层的getUser方法,假定dao层返回值即起作用。
注意:dao层get方法的参数一定要使用Mockito的静态方法产生。

controller层调用,且接口调用了第三方服务的接口:
public class DetectionControllerTest{
	
	@Autowired
	private IRestInvokeService restInvokeService;

	@Test
	public void testGetDetection4MT0() throws Exception {
		RestTemplate restTemplate = PowerMockito.mock(RestTemplate.class);
		String data = "{\"code\":\"0\",\"data\":{\"result\":[{\"no\":\"0101\",\"name\":\"test\"}]},\"msg\":\"success\"}";
		String url = "http://10.19.14.123:8080/monitor/health";
		ResponseEntity<String> responseEntity = new ResponseEntity<String>(data, null, HttpStatus.OK);
		PowerMockito.when(restTemplate.exchange(Matchers.eq(url), Matchers.eq(HttpMethod.POST), Matchers.<HttpEntity<String>> any(), Matchers.eq(String.class))).thenReturn(responseEntity);
		RestInvokeServiceImpl impl = org.springframework.test.util.AopTestUtils.getTargetObject(restInvokeService);
		Field field = impl.getClass().getDeclaredField("restTemplate");
		field.setAccessible(true);
		field.set(impl, restTemplate);
		ResultActions ra = mockMvc.perform(MockMvcRequestBuilders.post("/api/services/detection")    
							.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
							.content(requestBody)
							.session((MockHttpSession)loginSession)
							.header(LocaleTextUtil.locale_header,"zh_CN")
						);
		MvcResult result = ra.andReturn();
	}


}

     

@RunWith(PowerMockRunner.class)
@PrepareForTest({RestHighLevelClient.class})
@PowerMockIgnore({"sun.security.*", "javax.net.*"})
UserServiceTest{

	@InjectMocks
    UserServiceImpl userServiceMock;
	
    @Mock
    UserDao userDao;
	
	@Test
    public void testGetUsers(){
		List<User> list = new ArrayList();
		list.add(new User());
        PowerMockito.when(userDao.getUserList(Mockito.anyString())).thenReturn(list);
        List<User> userList = userServiceMock.getUserList();
        Assert.assertEquals(1,userList.size());
    }
}

 

 

分享到:
评论

相关推荐

    powermock-cover.zip

    使用powermock+jacoco,测试静态方法,测试覆盖率。环境是:IDEA+maven。 直接执行:mvn clean install,然后查看覆盖率:powermock-cover\target\site\jacoco\index.html

    powermock单元测试

    powermock1.4.9.jar和powermock测试静态方法和私有方法的测试代码,大家都知道easymock不能测试这些,配合使用和单元测试更加完善。

    powermock

    powermock powermock powermock powermock

    单元测试模拟框架PowerMock.zip

    PowerMock 也是一个单元测试模拟框架,它是在其它单元测试模拟框架的基础上做出的扩展。通过提供定制的类加载器以及一些字节码篡改技巧的应用,PowerMock 现了对静态方法、构造方法、私有方法以及 Final 方法的模拟...

    powerMock的测试样例集合

    学习powermock实战手册,自己写的若干例子,mock static、final ,mock 局部变量、成员变量、Answer接口、ArgumentMatcher

    PowerMock实战

    全面介绍PowerMock的使用,帮助初学者彻底了解PowerMock的使用,提高代码的健壮性

    PowerMock+Mockito-junit测试套件1.6.3版本

    PowerMock+Mockito-junit测试套件1.6.3版本

    单元测试中PowerMock常用方法.

    单元测试中PowerMock常用方法

    汪文君powermock实战教学

    Powermock是基于现有的mock框架,easymock和mockito而建立的一个非常强大的框架,它具备easymock和mockito所不具备的一些功能,该系列教材详细的说明了如何使用powermock的所有特性

    powermock-classloading-xstream-1.4.7

    powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-class...

    powermock-api-support-2.0.9-API文档-中英对照版.zip

    赠送jar包:powermock-api-support-2.0.9.jar; 赠送原API文档:powermock-api-support-2.0.9-javadoc.jar; 赠送源代码:powermock-api-support-2.0.9-sources.jar; 赠送Maven依赖信息文件:powermock-api-support...

    powermock-api-mockito2-2.0.9-API文档-中英对照版.zip

    赠送jar包:powermock-api-mockito2-2.0.9.jar; 赠送原API文档:powermock-api-mockito2-2.0.9-javadoc.jar; 赠送源代码:powermock-api-mockito2-2.0.9-sources.jar; 赠送Maven依赖信息文件:powermock-api-...

    PowerMock是一个Java框架能够允许你单元测试通常被视为不可测试的代码

    PowerMock比Mockito强大,能模拟static,private和final的方法,还能模拟构造方法。

    powermock-core-2.0.9-API文档-中英对照版.zip

    赠送jar包:powermock-core-2.0.9.jar; 赠送原API文档:powermock-core-2.0.9-javadoc.jar; 赠送源代码:powermock-core-2.0.9-sources.jar; 赠送Maven依赖信息文件:powermock-core-2.0.9.pom; 包含翻译后的API...

    powermock maven respo

    powermock maven respo

    powermock依赖jar文件.rar

    网上找了好多powermock的例子都不好用,一怒之下亲自挨个引入测试,最终得到这些jar,给需要的朋友,自己也留个备份。

    EasyMock and PowerMock入门PPT

    什么时候需要Mock对象 什么是EasyMock EasyMock的优点和缺点 运行EasyMock需要的资源 EasyMock的基本使用步骤 什么是PowerMock 运行PowerMock需要的资源 PowerMock的扩展功能

    PowerMock.zip

    PowerMock资料,jar包 http://www.ibm.com/developerworks/cn/java/j-lo-powermock/

    PowerMock实战手册

    PowerMock实战手册。采用的是Junit+PowerMock+Mockito这样的组合来进行讲述。

    powermock-module-junit4-2.0.9-API文档-中英对照版.zip

    赠送jar包:powermock-module-junit4-2.0.9.jar; 赠送原API文档:powermock-module-junit4-2.0.9-javadoc.jar; 赠送源代码:powermock-module-junit4-2.0.9-sources.jar; 赠送Maven依赖信息文件:powermock-...

Global site tag (gtag.js) - Google Analytics