赞
踩
在写单元测试的过程中,通常需要验证某些方法是否按期执行。这时就可以使用verify方法来验证某个外部方法是否被调用,调用次数以及被调用时的参数甚至验证外部方法的调用顺序。
verify的基本用法,假设我们有一个名为CommonService的类,在该类中有一个findConfig方法,用户获取系统配置相关信息。这时我们想要验证findConfig方法是否被调用过,并且调用的次数为1次。下方为示例:
//首先要创建一个mock对象,可以通过mock方法或使用@Mock注解,下方为mock方法创建
CommonService commonService = Mockito.mock(CommonService.class);
//随后调用findConfig方法
commonService.findConfig("a”);
//使用verify方法验证findConfig方法是否被调用过,且调用次数为1
Mockito.verify(CommonService,Mockito.times(1)).findConfig(“a”);
在上面的例子中,我们首先创建了一个CommonService的mock对象,然后调用了findConfig方法,并且传入了参数字符串a。最后使用verify方法验证findConfig是否被调用过,且调用次数为1。还有一点值得注意,该方法不仅会验证调用过和调用次数,也会验证传入的参数是否为字符串a。
验证方法调用次数的其他方法示例:
//验证方法是否至少被调用了一次
Mockito.verify(CommonService,Mockito.atLeastOnce()).findConfig(“a”);
//验证方法是否至多被调用了两次
Mockito.verify(CommonService,Mockito.atMost(2)).findConfig(“a”);
............
除了验证方法的调用次数以及参数,verify方法还可以用来验证方法的调用顺序。假设CommonService中还有一个findAdminUser方法,我们要验证findConfig方法在findAdminUser方法之前被调用。下方为示例:
//首先要创建一个mock对象
CommonService commonService = Mockito.mock(CommonService.class);
//随后调用两个方法
commonService.findConfig("a”);
commonService.findAdminUser("b”);
//验证方法的调用顺序
InOrder inOrder = Mockito.inOrder(commonService);
inOrder.verify(commonService)..findConfig("a”);
inOrder.verify(commonService)..findAdminUser("b”);
在上面的例子中,我们首先调用了findConfig,然后调用了findAdminUser方法。随后我们使用Mockito的inOrder方法创建了一个InOrder对象,并使用它来验证findConfig方法findAdminUser方法之前被调用。
合理使用verify方法,可以编写出高质量的单元测试代码,提高代码的可靠性与可维护性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。