序章
パススルーの実行後にインターフェイス内のverify
シグネチャを持つメソッドが呼び出されることを (Mockito v1.9.5 を使用して) 検証するテストを作成しようとしていますが、本当に理解できないエラーが発生しています。 .deinit()
Bar
Foo.deinit()
これが私FooTest.java
が実行しようとしているものです:
@RunWith(JukitoRunner.class)
public class FooTest {
@Inject
private Foo foo;
@Inject
private Bar bar;
public static class TestModule extends JukitoModule {
@Override
protected void configureTest() {
bind(Foo.class).to(FooImpl.class);
bind(Bar.class).to(BarImpl.class);
bindSpy(BarImpl.class);
}
}
@Test
public void testDeinit() {
foo.init(mock(Baz.class));
foo.deinit();
verify(bar).deinit();
}
@After
public void validate() {
validateMockitoUsage(); //line YY
}
}
これを実行するtestDeinit()
と、次のエラーで失敗します。
org.mockito.exceptions.misusing.UnfinishedVerificationException:
Missing method call for verify(mock) here:
-> at redacted.impl.BarImpl.deinit(BarImpl.java:XX)
Example of correct verification:
verify(mock).doSomething()
Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
at redacted.impl.FooTest.validate(FooTest.java:YY)
at org.jukito.InjectedStatement.evaluate(InjectedStatement.java:96)
at org.jukito.InjectedAfterStatements.evaluate(InjectedAfterStatements.java:58)
at org.jukito.jukitoRunner.run(JukitoRunner.java:197)
あまり有用な情報を抽出できませんでした。verify(bar).deinit()
エラーが終わりを迎えていない可能性があると不平を言っているように思え .deinit()
ます。その部分を削除して、同じエラーを取得できます。エラー メッセージに示されている例は、私の使用するverify
.
詳細
これが私のBarImpl.java
public class BarImpl implements Bar {
private final Qux qux;
private final Quux quux;
@Inject
public BarImpl(final Qux qux, final Quux quux) {
this.qux = qux;
this.quux = quux;
}
@Override
private final void init(Baz baz) {
quux.init(this);
qux.init();
}
@Override
public final void deinit() {
qux.deinit(); //line XX
}
}
qux.deinit()
ここで失敗がどのように発生するかはまだ不明です。これが私のものFooImpl.java
です:
class FooImpl implements Foo {
private final Bar bar;
@Inject
public FooImpl(final Bar bar) {
this.bar = bar;
}
@Override
public void init(Baz baz) {
bar.init(baz);
}
@Override
public void deinit() {
bar.deinit();
}
}
質問
UnfinishedVerificationException の原因とその修正方法を教えてください。
私は Mockito の初心者なので、基本的なことを見逃している可能性が非常に高いです。他に提供できる情報があればお知らせください。これがすでに回答されている場合は申し訳ありませんが、ここで回答を誤解しています。