`
lbyzx123
  • 浏览: 478011 次
  • 性别: 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的测试样例集合

    PowerMock是一个强大的Java单元测试框架,它扩展了其他如EasyMock等工具的功能,允许开发者对静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器进行模拟和测试。在“powerMock的测试样例集合”中,...

    powermock-cover.zip

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

    powermock单元测试

    PowerMock 是一个强大的Java单元测试框架,它扩展了其他单元测试库如EasyMock,使得能够对静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器等进行模拟和测试。在传统的单元测试中,这些通常被视为...

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

    PowerMock和Mockito是两个非常流行的Java单元测试框架,结合JUnit,它们可以提供强大的测试能力。在本文中,我们将深入探讨"PowerMock+Mockito-junit测试套件1.6.3版本"中的关键概念、功能和使用方法。 **PowerMock...

    powermock

    PowerMock 是一个强大的 Java 测试框架的扩展工具,它允许开发者在单元测试中模拟静态方法、构造函数、最终类和删除静态初始化器等通常难以测试的场景。在 Java 单元测试领域,EasyMock 和 JUnit 是两个常用库,...

    单元测试中PowerMock常用方法.

    在单元测试领域,PowerMock是一个强大的工具,它扩展了诸如Mockito等模拟框架的功能,允许开发者模拟静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器等。这一工具对于测试那些难以或者无法正常...

    单元测试模拟框架PowerMock.zip

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

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

    PowerMock是一个强大的Java框架,它的主要目标是使得那些在传统单元测试中难以或者无法测试的代码变得可测试。这个框架扩展了诸如Mockito等其他流行的模拟库的功能,使其能够处理更复杂的模拟场景。在传统的单元测试...

    PowerMock实战手册.pdf

    PowerMock解决了在测试中无法通过常规mocking框架覆盖到的特殊用例,如对静态方法或单例对象的控制。 #### 如何获得PowerMock PowerMock可以从其官方网站或者依赖管理工具(如Maven或Gradle)获得。使用Maven时,...

    powermock依赖jar文件.rar

    PowerMock是一个强大的Java单元测试框架,它扩展了如Mockito这样的工具,允许开发者模拟静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器。在Java开发中,有时我们需要对不可Mock的对象进行单元...

    汪文君powermock实战教学

    【PowerMock实战教学】是由汪文君主讲的一系列教程,专注于讲解如何使用PowerMock这一强大的Java单元测试框架。PowerMock是在easymock和mockito的基础上构建的,旨在提供更多的功能,解决传统mock框架无法处理的一些...

    PowerMock实战手册

    《PowerMock实战手册》是一本专注于使用PowerMock进行单元测试的指南,结合了Junit测试框架和Mockito库,为开发者提供了全面的测试解决方案。在实际的软件开发中,单元测试是确保代码质量的重要环节,它能帮助我们找...

    PowerMock.zip

    PowerMock 是一个强大的Java单元测试框架的扩展,它允许开发者模拟静态方法、构造函数、final 类、enum 和私有方法,这些都是传统单元测试工具如JUnit和EasyMock无法处理的。这个压缩包“PowerMock.zip”可能包含...

    PowerMock实战

    PowerMock是一个强大的Java单元测试框架,它允许测试代码中静态方法、私有方法以及final类的模拟。它通常与JUnit和EasyMock等测试框架结合使用,用于更高效的单元测试。 标题“PowerMock实战”意味着本书将深入介绍...

    powermock源码 详细学习好帮手

    PowerMock 是一个强大的Java单元测试框架,它扩展了其它单元测试工具,如Mockito,使得开发者可以模拟静态方法、构造函数、final类和方法、删除静态初始化器等。这款库在进行复杂对象模拟时非常有用,尤其是在处理...

    powermock-mockito-junit-1.6.2.zip

    PowerMock通过字节码操作(Bytecode Manipulation)实现这些功能,使得测试更加灵活和全面。在实际项目中,当存在难以或无法直接测试的代码时,PowerMock可以提供解决方案。 2. Mockito Mockito是一个流行的Java...

    使用PowerMock来Mock静态函数

    PowerMock就是这样一款强大的工具,它扩展了EasyMock的功能,允许开发者在单元测试中模拟静态方法、构造器、final类和方法、删除静态初始化器等。本文将详细介绍如何使用PowerMock来Mock静态函数,并探讨其背后的...

    powermock maven respo

    PowerMock Maven Repository是一个重要的开发工具资源库,它主要服务于Java开发者,特别是那些使用PowerMock框架进行单元测试的人员。PowerMock是一个强大的库,允许开发者模拟静态方法、构造函数、删除final修饰、...

    powermock-easymock-junit-1.5.4.zip

    PowerMock与EasyMock是Java单元测试领域中的两个重要库,它们与JUnit结合使用,能够帮助开发者在测试过程中模拟复杂的对象行为和系统环境。这个压缩包"powermock-easymock-junit-1.5.4.zip"很可能包含了这三个库的...

Global site tag (gtag.js) - Google Analytics