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+jacoco,测试静态方法,测试覆盖率。环境是:IDEA+maven。 直接执行:mvn clean install,然后查看覆盖率:powermock-cover\target\site\jacoco\index.html
powermock1.4.9.jar和powermock测试静态方法和私有方法的测试代码,大家都知道easymock不能测试这些,配合使用和单元测试更加完善。
powermock powermock powermock powermock
PowerMock 也是一个单元测试模拟框架,它是在其它单元测试模拟框架的基础上做出的扩展。通过提供定制的类加载器以及一些字节码篡改技巧的应用,PowerMock 现了对静态方法、构造方法、私有方法以及 Final 方法的模拟...
学习powermock实战手册,自己写的若干例子,mock static、final ,mock 局部变量、成员变量、Answer接口、ArgumentMatcher
全面介绍PowerMock的使用,帮助初学者彻底了解PowerMock的使用,提高代码的健壮性
PowerMock+Mockito-junit测试套件1.6.3版本
单元测试中PowerMock常用方法
Powermock是基于现有的mock框架,easymock和mockito而建立的一个非常强大的框架,它具备easymock和mockito所不具备的一些功能,该系列教材详细的说明了如何使用powermock的所有特性
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...
赠送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...
赠送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比Mockito强大,能模拟static,private和final的方法,还能模拟构造方法。
赠送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的例子都不好用,一怒之下亲自挨个引入测试,最终得到这些jar,给需要的朋友,自己也留个备份。
什么时候需要Mock对象 什么是EasyMock EasyMock的优点和缺点 运行EasyMock需要的资源 EasyMock的基本使用步骤 什么是PowerMock 运行PowerMock需要的资源 PowerMock的扩展功能
PowerMock资料,jar包 http://www.ibm.com/developerworks/cn/java/j-lo-powermock/
PowerMock实战手册。采用的是Junit+PowerMock+Mockito这样的组合来进行讲述。
赠送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-...