0


单元测试中Mockito的verify方法的使用

    在写单元测试的过程中,通常需要验证某些方法是否按期执行。这时就可以使用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

本文转载自: https://blog.csdn.net/ggg123659/article/details/138545515
版权归原作者 乌云冰淇淋 所有, 如有侵权,请联系我们删除。

“单元测试中Mockito的verify方法的使用”的评论:

还没有评论