all java unit-testing mockito

java - all - mockito vs junit



Mockito verifica el orden/secuencia de las llamadas a los métodos (3)

Sí, esto se describe en la documentación. Tienes que usar la clase InOrder .

Ejemplo (suponiendo que ya se crearon dos burlas):

InOrder inOrder = inOrder(serviceAMock, serviceBMock); inOrder.verify(serviceAMock).methodOne(); inOrder.verify(serviceBMock).methodTwo();

¿Hay alguna manera de verificar si se llama a methodTwo antes del methodTwo en 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(); } }


Tenga en cuenta que también puede usar la clase InOrder para verificar que se InOrder varios métodos en orden en una sola simulación, no solo en dos o más simulacros.

Supongamos que tengo dos clases, Foo y Bar :

public class Foo { public void first() {} public void second() {} } public class Bar { public void firstThenSecond(Foo foo) { foo.first(); foo.second(); } }

Luego puedo agregar una clase de prueba para probar que el first() método de firstThenSecond() realmente llama first() , luego second() , y no second() , luego first() . Vea el siguiente código de prueba:

public class BarTest { @Test public void testFirstThenSecond() { Bar bar = new Bar(); Foo mockFoo = Mockito.mock(Foo.class); bar.firstThenSecond(mockFoo); InOrder orderVerifier = Mockito.inOrder(mockFoo); // These lines will PASS orderVerifier.verify(mockFoo).first(); orderVerifier.verify(mockFoo).second(); // These lines will FAIL // orderVerifier.verify(mockFoo).second(); // orderVerifier.verify(mockFoo).first(); } }


InOrder te ayuda a hacer eso.

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();