读书人

证验mockito交互行为

发布时间: 2012-09-05 15:19:34 作者: rapoo

验证mockito交互行为

package com.lijun.mockito;import static org.mockito.Mockito.*;import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;import org.mockito.Mock;import org.mockito.MockitoAnnotations;/******************************* * 对于final类,匿名类和JAVA基本类型是无法进行Mock的  * 对于static和final修饰的方法是无法进行设定的 *  */public class MockitoSampleTest {// 对接口进行模拟UserService mockUserService = mock(UserService.class);// 对类进行模拟UserServiceImpl mockServiceImpl = mock(UserServiceImpl.class);@MockUser mockUser;@Beforepublic void initMocks() {// 初始化当前测试类所有@Mock注解模拟对象MockitoAnnotations.initMocks(this);}/** * Mock对象一旦建立便会自动记录自已的交互行为,可以有选择地对其交互进行验证。  * 在Mockito中验证mock对象交到行为的方法是verify(mock).xxx() */// 模拟接口UserService测试@Testpublic void testMockInterface() {// 对方法设定返回值when(mockUserService.findUserByUserName("tom")).thenReturn(new User("tom", "1234"));// 对方法设定返回值doReturn(true).when(mockUserService).hasMatchUser("tom", "1234");// 对void方法进行方法预期设定User u = new User("John", "1234");doNothing().when(mockUserService).registerUser(u);// 执行方法调用User user = mockUserService.findUserByUserName("tom");boolean isMatch = mockUserService.hasMatchUser("tom", "1234");mockUserService.registerUser(u);//验证返回值assertNotNull(user);assertEquals(user.getUserName(), "tom");assertEquals(isMatch, true);//验证交互行为verify(mockUserService).findUserByUserName("tom");//验证方法至少调用一次verify(mockUserService, atLeastOnce()).findUserByUserName("tom");verify(mockUserService, atLeast(1)).findUserByUserName("tom");//证证方法至多调用一次verify(mockUserService, atMost(1)).findUserByUserName("tom");}}

读书人网 >编程

热点推荐