1. 概述
在这个简短的教程中,我们将使用Mockito检查null是否作为参数传递给方法。我们将看到如何直接匹配null并使用ArgumentMatchers。
2. 示例设置
首先,让我们创建一个简单的Helper类,其中包含一个单独的concat()方法,返回两个String的拼接:
class Helper {
String concat(String a, String b) {
return a + b;
}
}
现在我们将添加一个Main类,它的方法methodUnderTest()调用concat()以将字符串Tuyucheng与null拼接起来:
class Main {
Helper helper = new Helper();
String methodUnderTest() {
return helper.concat("Tuyucheng", null);
}
}
3. 只使用精确值
让我们设置测试类:
class MainUnitTest {
@Mock
Helper helper;
@InjectMocks
Main main;
@BeforeEach
void openMocks() {
MockitoAnnotations.openMocks(this);
}
// Add test method
}
得益于@Mock,我们创建了一个mock的Helper。然后我们通过@InjectMocks将它注入到我们的Main实例中。最后,我们调用MockitoAnnotations.openMocks()来启用Mockito注解。
我们的目标是编写一个单元测试来验证methodUnderTest()委托给concat()。此外,我们要确保第二个参数为null。让我们保持简单并检查调用的第一个参数是Tuyucheng而第二个参数是null:
@Test
void whenMethodUnderTest_thenSecondParameterNull() {
main.methodUnderTest();
Mockito.verify(helper)
.concat("Tuyucheng", 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上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章