Search code examples
javaunit-testingmockito

Mockito verify order / sequence of method calls


Is there a way to verify if a methodOne is called before methodTwo in Mockito?

public class ServiceClassA {
    public void methodOne(){}
 }

public class ServiceClassB {
    public void methodTwo(){}
 }

public class TestClass {
    public void method(){
        ServiceClassA serviceA = new ServiceClassA();
        ServiceClassB serviceB = new ServiceClassB();
        serviceA.methodOne();
        serviceB.methodTwo();
    }
}

Solution

  • InOrder helps you to do that.

    ServiceClassA firstMock = mock(ServiceClassA.class);
    ServiceClassB secondMock = mock(ServiceClassB.class);
    
    Mockito.doNothing().when(firstMock).methodOne();   
    Mockito.doNothing().when(secondMock).methodTwo();  
    
    //create inOrder object passing any mocks that need to be verified in order
    InOrder inOrder = inOrder(firstMock, secondMock);
    
    //following will make sure that firstMock was called before secondMock
    inOrder.verify(firstMock).methodOne();
    inOrder.verify(secondMock).methodTwo();