单元测试系列之模拟利器Mockito

发表于:2012-6-26 10:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:stamen    来源:51Testing软件测试网采编

分享:

  验证交互行为

  Mock对象一旦建立便会自动记录自己的交互行为,所以我们可以有选择地对其交互行为进行验证。在Mockito中验证mock对象交互行为的方法是verify(mock). xxx()。于是用此方法验证了findUserByUserName()方法的调用,因为只调用了一次,所以在verify中我们指定了times参数或atLeastOnce()参数。最后验证返回值是否和预期一样。

  Java代码

import org.junit.Test;
import org.mockito.Mock;
import com.baobaotao.domain.User;
import com.baobaotao.service.UserService;
import com.baobaotao.service.UserServiceImpl;

public class MockitoSampleTest {
     …

     //① 模拟接口UserService测试
 @Test
 public void testMockInterface() {
          …
 when(mockUserService.findUserByUserName("tom"))
                         .thenReturn(new User("tom", "1234"));
User user = mockServiceImpl.findUserByUserName("tom");

//①-4 验证返回值
  assertNotNull(user);
  assertEquals(user.getUserName(), "tom");
  assertEquals(isMatch, true);

 //①-5 验证交互行为
verify(mockUserService).findUserByUserName("tom");

//①-6 验证方法至少调用一次
verify(mockUserService, atLeastOnce()).findUserByUserName("tom");
verify(mockUserService, atLeast(1)).findUserByUserName("tom");
 
//①-7 验证方法至多调用一次
verify(mockUserService, atMost(1)).findUserByUserName("tom");
 }

  Mockio为我们提供了丰富调用方法次数的验证机制,如被调用了特定次数verify(xxx, times(x))、至少x次verify(xxx, atLeast (x))、最多x次verify(xxx, atMost (x))、从未被调用verify(xxx, never())。在①-6处,验证findUserByUserName()方法至少被调用一次。在①-7处,验证findUserByUserName()方法至多被调用一次。

33/3<123
2023测试行业从业人员调查问卷已开启,千元大奖正在等你~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号