1. 概述

在这个简短的教程中,我们将使用Mockito来检查方法是否接收到 null 作为参数。我们将展示如何直接匹配 null,以及如何使用ArgumentMatchers

2. 示例设置

首先,创建一个简单的Helper类,它只有一个concat()方法,用于合并两个String

class Helper {

    String concat(String a, String b) {
        return a + b;
    }

}

现在,添加一个Main类。它的methodUnderTest()方法会调用concat(),将String Baeldungnull 进行连接:

class Main {

    Helper helper = new Helper();

    String methodUnderTest() {
        return helper.concat("Baeldung", null);
    }

}

3. 只使用确切值

让我们设置测试类:

class MainUnitTest {

    @Mock
    Helper helper;

    @InjectMocks
    Main main;

    @BeforeEach
    void openMocks() {
        MockitoAnnotations.openMocks(this);
    }

    // Add test method

}

我们通过*@Mock创建了一个模拟的Helper。然后,我们通过@InjectMocks将其注入到我们的Main*实例中。最后,我们调用了MockitoAnnotations.openMocks()来启用Mockito注解。

我们的目标是编写一个单元测试,验证*methodUnderTest()方法是否调用了concat()*。此外,**我们希望确保第二个参数是 null*。让我们保持简单,只检查调用的第一个参数是Baeldung*,而第二个参数是 null

@Test
void whenMethodUnderTest_thenSecondParameterNull() {
    main.methodUnderTest();
    Mockito.verify(helper)
      .concat("Baeldung", null);
}

我们使用Mockito.verify()来检查传入的参数是否符合预期。

4. 使用匹配器

现在,我们将使用Mockito的ArgumentMatchers来检查传递的值。由于第一个值在我们的示例中无关紧要,我们可以使用any()匹配器:因此,任何输入都会通过。**为了检查第二个参数是否为 null,我们可以简单地使用isNull()

@Test
void whenMethodUnderTest_thenSecondParameterNullWithMatchers() {
    main.methodUnderTest();
    Mockito.verify(helper)
      .concat(any(), isNull());
}

5. 总结

在这篇文章中,我们学习了如何使用Mockito验证方法接收到的参数是否为 null。我们既通过检查确切值,也使用了ArgumentMatchers来完成这个任务。

如往常一样,代码可以在GitHub上找到。