在写单元测试的过程中,通常需要验证某些方法是否按期执行。这时就可以使用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方法,可以编写出高质量的单元测试代码,提高代码的可靠性与可维护性。

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。

大家都在找:

java:java17