📜  验证 mockito 的次数 (1)

📅  最后修改于: 2023-12-03 15:42:32.282000             🧑  作者: Mango

验证 Mockito 的次数

Mockito 是一个用于 Java 开发的测试框架,它可以帮助你轻松地模拟对象,并进行单元测试。在模拟对象时,我么需要验证它们被调用的次数以及方法的参数。本文将介绍如何使用 Mockito 验证方法被调用的次数。

准备工作

在介绍如何使用 Mockito 进行验证之前,我们需要做一些准备工作。首先需要引入 Mockito 的依赖,你可以在你的项目中添加以下依赖:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>3.12.4</version>
    <scope>test</scope>
</dependency>
验证方法调用次数

Mockito 提供了多种方法来验证模拟对象的方法调用次数,以下代码是一个简单的示例:

import org.mockito.Mockito;

import static org.mockito.Mockito.*;

public class MyClassTest {

    @Test
    public void testMethodCallCount() {
        List<String> mockList = mock(List.class);

        mockList.add("one");
        mockList.add("two");

        verify(mockList, times(2)).add(anyString());
    }
}

在这个示例中,我们使用了 mock() 方法来创建一个 List 代理对象。然后我们使用 add() 方法向列表中添加了两个字符串。最后,我们使用 verify() 方法来验证 add() 方法被调用了两次。

verify(mockList, times(2)).add(anyString());

在这里,times(2) 方法指示验证方法被调用的次数。anyString() 方法用于匹配所有字符串类型的参数。

验证方法从未被调用

我们也可以使用 Mockito 来验证方法从未被调用。以下代码是一个简单的示例:

import org.mockito.Mockito;

import static org.mockito.Mockito.*;

public class MyClassTest {

    @Test
    public void testMethodNeverCalled() {
        List<String> mockList = mock(List.class);

        verify(mockList, never()).add(anyString());
    }
}

在这个示例中,我们使用了 mock() 方法来创建一个 List 代理对象。然后我们使用 verify() 方法来验证 add() 方法从未被调用。

verify(mockList, never()).add(anyString());
验证方法至少被调用一次

我们也可以使用 Mockito 来验证方法至少被调用一次。以下代码是一个简单的示例:

import org.mockito.Mockito;

import static org.mockito.Mockito.*;

public class MyClassTest {

    @Test
    public void testMethodCalledAtLeastOnce() {
        List<String> mockList = mock(List.class);

        mockList.add("one");

        verify(mockList, atLeastOnce()).add(anyString());
    }
}

在这个示例中,我们使用了 mock() 方法来创建一个 List 代理对象。然后我们使用 add() 方法向列表中添加了一个字符串。最后,我们使用 verify() 方法来验证 add() 方法至少被调用了一次。

verify(mockList, atLeastOnce()).add(anyString());
验证方法调用顺序

我们可以使用 Mockito 来验证模拟对象中的方法调用顺序。以下代码是一个简单的示例:

import org.mockito.Mockito;

import static org.mockito.Mockito.*;

public class MyClassTest {

    @Test
    public void testMethodCallOrder() {
        List<String> mockList = mock(List.class);

        mockList.add("one");
        mockList.add("two");

        InOrder inOrder = inOrder(mockList);
        inOrder.verify(mockList).add("one");
        inOrder.verify(mockList).add("two");
    }
}

在这个示例中,我们使用了 mock() 方法来创建一个 List 代理对象。然后我们使用 add() 方法向列表中添加了两个字符串。最后,我们使用 inOrder() 方法创建一个 InOrder 对象,它使我们能够验证模拟对象中方法的调用顺序。

InOrder inOrder = inOrder(mockList);
inOrder.verify(mockList).add("one");
inOrder.verify(mockList).add("two");

在这里,我们首先验证 add("one"),然后验证 add("two")。

总结

Mockito 提供了一种简单的方式来验证模拟对象中的方法调用次数、顺序、从未被调用。通过对方法的调用进行验证,我们可以确保它们被正确地调用、传递参数和返回结果。希望这篇文章帮助你了解如何在单元测试中使用 Mockito 进行方法调用验证!