以前从未见过这个问题——当使用verify
或verifyInteractions
而测试失败时,Mockito的职业列表指向JUnit代码,而不是应用程序代码:
[junit] No interactions wanted here:
[junit] -> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
[junit] But found this interaction on mock 'mockCounter':
[junit] -> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
[junit] ***
[junit] For your reference, here is the list of all invocations ([?] - means unverified).
[junit] 1. [?]-> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
[junit] 2. [?]-> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
[junit] 3. -> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
[junit]
[junit] junit.framework.AssertionFailedError:
[junit] No interactions wanted here:
[junit] But found this interaction on mock 'mockCounter':
[junit] ***
[junit] For your reference, here is the list of all invocations ([?] - means unverified).
我使用的是Mockito1.10.19
和JUnit4.12
。代码非常标准:
public class MyTest {
@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();
@Mock
private Counter mockCounter;
...
@Test
public void test() {
...
verifyNoMoreInteractions(mockCounter);
}
首先,我还使用了ExpectedException
规则:
@Rule
public ExpectedException thrown = ExpectedException.none();
...这导致了其他问题,因为它将Mockito的验证失败捕获为意外异常:
[junit] No interactions wanted here:
[junit] -> at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
[junit] But found this interaction on mock 'mockCounter':
[junit] -> at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
[junit] ***
[junit] For your reference, here is the list of all invocations ([?] - means unverified).
[junit] 1. [?]-> at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
[junit] 2. [?]-> at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
[junit] 3. -> at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
[junit]
[junit] junit.framework.AssertionFailedError:
[junit] No interactions wanted here:
[junit] But found this interaction on mock 'mockCounter':
[junit] ***
[junit] For your reference, here is the list of all invocations ([?] - means unverified).
我正在开发一个新的代码库,以前从未见过这个问题。似乎Mockito或JUnit清除堆栈跟踪的力度太大或是其他什么。。。
我可以在没有ExpectedException
的情况下生活,但在未来测试失败的情况下,没有模拟调用点似乎很烦人。我该怎么解决这个问题?我看到了withSettings()的概念。verboseLogging()
但我不想一直记录调用,除非测试失败。
似乎罪魁祸首是MockitoRule。将其替换为注释。(这个)
setUp()
方法中的code>可以完全修复问题,即使使用了ExpectedException
规则。
它已在Mockito2中修复。x
但不向后移植到1。x
。
在我的实现类中,我有一个读写锁定义,如下所示, 我在一个名为的方法中使用它, 正如我所说的,是null,但是rwLock是初始化的。请解释Mockito是如何发生这种情况的。理想的方法是什么?
基类 在派生类中不应用组合和其他函数。如果是,我是否应用了错误的模式?我应该如何处理相同的?
异常堆栈跟踪
问题内容: 我正在使用Selenium编写一些UI测试,并且使用Dojo工具箱具有一个JavaScript Tree控件。 我已经使用Dojo提供的示例为树的每个节点实现了一个上下文菜单,但是我需要Selenium测试来“调用”树节点上的右键,但是我无法使其正常工作。这些测试根本不会通过JavaScript模拟右键单击事件,并且不会显示上下文菜单。 是否有人在使用Dojo和Selenium调用上下
问题内容: 我有四个让我们说A,B,C,D的类,每个类都从另一个调用方法。 现在我已经模拟了类A,并且想模拟使用嘲笑的方法 并希望在递归方法调用上获取“ foo” 应该回来 我试过了 when(a.getB()。getC()。getD())。thenReturn(“ foo”); 但是得到了nullPointerException 然后我尝试 doReturn(“ foo”)。when(a.get
我有4个类让说A,B,C,D,每一个调用的方法从另一个。 现在我已经模拟了类A,并想使用mockito模拟一个方法 但得到nullPointerException 然后我试着 doReturn(“foo”).When(A.getb().getc().getd()); 但我不能一次就做到吗?如有任何帮助,我们将不胜感激。