796

メソッドがオブジェクトの依存関係で呼び出されていないことを確認する方法は?

例えば:

public interface Dependency {
    void someMethod();
}

public class Foo {
    public bar(final Dependency d) {
        ...
    }
}

Foo テストの場合:

public class FooTest {
    @Test
    public void dependencyIsNotCalled() {
        final Foo foo = new Foo(...);
        final Dependency dependency = mock(Dependency.class);
        foo.bar(dependency);
        **// verify here that someMethod was not called??**
    }
}
4

5 に答える 5

1339

さらに意味のある :

import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

// ...

verify(dependency, never()).someMethod();

この機能のドキュメントは§4「呼び出しの正確な数の検証 / 少なくとも x / 決して」にあり、neverjavadoc はhere にあります。

于 2012-10-12T16:08:03.190 に答える
137

Mockito.verify次のように、メソッドで2 番目の引数を使用します。

Mockito.verify(dependency, Mockito.times(0)).someMethod()
于 2012-10-12T15:44:46.263 に答える
25

従うべきより一般的なパターンとして、私は@Afterテストでブロックを使用する傾向があります。

@After
public void after() {
    verifyNoMoreInteractions(<your mock1>, <your mock2>...);
}

その後、テストは、呼び出されるべきものだけを自由に検証できます。

また、「インタラクションがない」ことを確認するのを忘れることがよくありましたが、後になって、呼び出されるべきではないものが呼び出されていることに気付きました。

したがって、このパターンは、具体的に検証されていないすべての予期しない呼び出しをキャッチするのに役立ちます。

于 2015-03-03T14:54:02.150 に答える