参数匹配器2025年3月17日 | 阅读 3 分钟 参数匹配器主要用于在 Mockito 中执行灵活的验证和存根。它扩展了 ArgumentMatchers 类以访问所有匹配器函数。Mockito 使用 equal() 作为验证和匹配参数值的传统方法。在某些情况下,我们需要在验证参数值时具有更大的灵活性,因此我们应该使用参数匹配器而不是 equal() 方法。ArgumentMatchers 类在 org.mockito 包中可用。 ArgumentMatchers 类包含多种方法;下面列出了一些: 方法类型和方法名 | 描述 |
---|
<T> any() | 它匹配所有值(任何东西),包括 null 值和可变参数。 | boolean anyBoolean() | 它匹配任何布尔值或非 null 布尔值。 | byte anyByte() | 它匹配任何字节或非 null 字节值。 | char anyChar() | 它匹配任何字符或非 null 字符值。 | Collection <T> anyCollection | 它匹配应用程序中的任何非 null 集合。 | double anyDouble() | 它匹配任何双精度值或非 null 双精度值。 | float anyFloat() | 它匹配任何浮点值或非 null 浮点值。 | int anyInt() | 它匹配任何整数值或非 null 整数值。 | Iterable<T> anyIterable() | 它匹配任何整数值或非 null 整数值。 | Iterable<T> anyIterable() | 它匹配任何非 null 可迭代值。 | List<T> anyList() | 它匹配任何非 null 列表。 | long anyLong() | 它匹配任何长整型或非 null 长整型值。 | Set<T> anySet() | 它匹配任何非 null 集合。 | short anyShort() | 它匹配任何短整型或非 null 短整型值。 | String anyString() | 它匹配任何非 null 字符串。 | <T> argThat(ArgumentMatcher<T> matcher) | 它允许创建自定义参数匹配器。 | boolean booleanThat(ArgumentMatcher<Boolean> matcher) | 它允许创建自定义布尔参数匹配器。 | byte byteThat(ArgumentMatcher<Byte> matcher) | 它允许创建自定义字节参数匹配器。 | char charThat(ArgumentMatcher<Character> matcher) | 它允许创建自定义字符参数匹配器。 | String contains(String substring) | 它匹配包含子字符串的字符串参数。 | double doubleThat(ArgumentMatcher<Double> matcher) | 它允许创建自定义双精度参数匹配器。 | String endsWith(String suffix) | 它匹配以给定后缀结尾的字符串参数。 | boolean eq(boolean value) | 它与等于给定值的布尔参数匹配。 | double eq(double value) | 它与等于给定值的双精度参数匹配。 | long eq(long value) | 它与等于给定值的长整型参数匹配。 | <T> isNotNull() | 它与非 null 参数匹配。 | <T> is Null() | 它匹配 null 参数。 | <T> same(T value) | 它检查对象参数是否与给定值相同。 |
注意:使用参数匹配器时,所有参数都必须由匹配器提供。参数匹配器的示例在这里,我们将创建一个参数匹配器的示例。 我们在测试用例中使用 anyInt() 方法,我们可以使用 ArgumentMatchers 类中可用的任何方法。 TestList.java 输出 以下输出显示使用参数匹配器成功运行测试。  使用参数匹配器抛出异常的示例在这里,我们将创建一个使用参数匹配器抛出异常的示例。 在此示例中,我们将使用 JUnit 特性 @Test(expected = RuntimeException.class) 来防止测试失败。 如果我们不使用它,测试将失败并抛出异常。 TestList.java 输出 以下输出显示使用 @Test(expected = RuntimeException.class) 成功运行测试。  以下输出显示错误,因为我们未使用 @Test(expected = RuntimeException.class)。 
|