Testing 使用Mockito模拟函数调用会引发InvalidUseofMatcherException

Testing 使用Mockito模拟函数调用会引发InvalidUseofMatcherException,testing,mockito,matcher,Testing,Mockito,Matcher,我试图使用Mockito来模拟函数调用 我在一个名为QueryBuilder的类中有一个运行QueryForDataWindow的方法。runQueryForDataWindow方法接受两个参数-1字符串2类FetchWindow的实例 runQueryForDataWindow(String str, FetchWindow fetchWindow) 下面是我的模拟测试用例的样子 final QueryBuilder queryBuilder = mock(QueryBuilder.clas

我试图使用Mockito来模拟函数调用

我在一个名为QueryBuilder的类中有一个运行QueryForDataWindow的方法。runQueryForDataWindow方法接受两个参数-1字符串2类FetchWindow的实例

runQueryForDataWindow(String str, FetchWindow fetchWindow)
下面是我的模拟测试用例的样子

final QueryBuilder queryBuilder = mock(QueryBuilder.class);

Mockito.when(queryBuilder.runQueryForDataWindow(anyString(), 
            any(FetchWindow.class))).thenReturn(queryResult);
我想返回queryResult,而不考虑函数参数

当我运行这个时,测试失败了 org.mockito.exceptions.misusing.invalidUseofMatcherException


我想我在FetchWindow实例中尝试传递的方式可能有问题。感谢这里的任何线索。

向我们展示相关代码和异常的完整堆栈跟踪。告诉我们例外情况指的是哪一行代码;Mockito matchers的奇怪之处在于,由于抛出异常的行上方或之前的无效使用,它们可以抛出异常。在前一个匹配器使用之后,检查你没有试图模拟最后的方法,并考虑一些调试步骤,包括在上面发布之前调用Mockito.validateMockitoUsage。谢谢杰夫,JB。runQueryForDataWindow实际上是最后一个方法。我取消了最后的资格赛,重新测试。InvalidUseOfMatcherException异常已消失,但该方法未被模拟。我看到下面的堆栈跟踪:null java.sql.SQLException:java.sql.DriverManager.getConnectionDriverManager.java:556 at java.sql.DriverManager.getConnectionDriverManager.java:215 at test.repo.impl.jdbclient.getconnectionjdbclient.java:251 atjava:184 at test.repo.impl.CollectorRepoImpl.createFetchWindowsCollectorRepoImpl.java:111 at test.repo.impl.CollectorRepoImpl.getDataSynchronouslyCollectorRepoImpl.java:72如堆栈跟踪所示,从runQueryForDataWindow调用getConnection。但是,如果runQueryForDataWindow被成功模拟,它应该返回queryResult。