java - 参数匹配器的使用无效

标签 java mockito

下面的简单测试用例因异常而失败。

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers! 3 matchers expected, 2 recorded:

不知道哪里出了问题

@Test
public void testGetStringTest(){

    final long testId = 1;
    String dlrBAC = null;
    NamedParameterJdbcTemplate jdbcTemplate = mock(NamedParameterJdbcTemplate.class);
    when(this.dao.getNamedParameterJdbcTemplate()).thenReturn(jdbcTemplate);
    when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), String.class
                        )).thenReturn("Test");
    dlrBAC =  dao.getStringTest(testId);
    assertNotNull(dlrBAC);

}

最佳答案

Mockito 要求您在 stub 方法调用时仅使用原始值或仅匹配器。完整的异常(不是你在这里发布的)肯定解释了一切。

简单的改行:

when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), String.class
                        )).thenReturn("Test");

when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), eq(String.class)
                        )).thenReturn("Test");

它应该可以工作。

关于java - 参数匹配器的使用无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24468456/

相关文章:

java - 如何使用非 ASCII 文件名创建 Windows 原生兼容 Zip 文件

java - 将二维数组添加到一维数组

unit-testing - GWT Mockito 集成

java - 如何编写在代码覆盖期间覆盖 catch block 的 Junit 测试用例?

java - 使用 mockito 和 junit 测试图像

java - 我使用mockito和反射模拟这个私有(private)静态最终变量做错了什么?

java - IntelliJ 索引太慢

java - 如何抑制所有初始化错误

Java Windows UTF-8 (unicode) 打印

java - 单元测试 Java switch - 案例逻辑 - 多个单独的函数或多次调用