Search code examples
javaunit-testingjunitmockitotdd

How to verify that a specific method was not called using Mockito?


How to verify that a method is not called on an object's dependency?

For example:

public interface Dependency {
    void someMethod();
}

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

With the Foo test:

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??**
    }
}

Solution

  • Even more meaningful :

    import static org.mockito.Mockito.never;
    import static org.mockito.Mockito.verify;
    
    // ...
    
    verify(dependency, never()).someMethod();
    

    The documentation of this feature is there §4 "Verifying exact number of invocations / at least x / never", and the never javadoc is here.