1. 概述
在这个简短的教程中,我们将使用Mockito来检查方法是否接收到 null
作为参数。我们将展示如何直接匹配 null
,以及如何使用ArgumentMatchers。
2. 示例设置
首先,创建一个简单的Helper类,它只有一个concat()方法,用于合并两个String:
class Helper {
String concat(String a, String b) {
return a + b;
}
}
现在,添加一个Main类。它的methodUnderTest()方法会调用concat(),将String Baeldung 和 null
进行连接:
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上找到。