java unit-testing easymock

java - easymock maven



Las expectativas de EasyMock con métodos de vacío. (3)

Este método le devuelve el control de expectativa a través de IExpectationSetters ; lo que le brinda la capacidad de validar (afirmar) que su método de anulación se llamó o no y comportamientos relacionados, por ejemplo,

EasyMock.expectLastCall().once(); EasyMock.expectLastCall().atLeastOnce(); EasyMock.expectLastCall().anyTimes();

La API detallada de IExpectationSetters está here .

En su ejemplo, solo obtiene el identificador y no hace nada con él, por lo tanto, no ve ningún impacto de tener o eliminar la declaración. Es muy parecido a como llamas a un método getter o declaras alguna variable y no la usas.

Estoy usando EasyMock para hacer algunas pruebas unitarias y no entiendo el uso de EasyMock.expectLastCall() . Como puede ver en mi código a continuación, tengo un objeto con un método que devuelve void al que se llama en el método de algún otro objeto. Creo que debo hacer que EasyMock espere esa llamada de método, pero intenté comentar la invocación a expectLastCall() y aún funciona. ¿Es porque pasé EasyMock.anyObject()) que lo registró como una llamada esperada o hay algo más en EasyMock.anyObject()) ?

MyObject obj = EasyMock.createMock(MyObject.class); MySomething something = EasyMock.createMock(MySomething.class); EasyMock.expect(obj.methodThatReturnsSomething()).andReturn(something); obj.methodThatReturnsVoid(EasyMock.<String>anyObject()); // whether I comment this out or not, it works EasyMock.expectLastCall(); EasyMock.replay(obj); // This method calls the obj.methodThatReturnsVoid() someOtherObject.method(obj);

El documento API para EasyMock dice esto sobre expectLastCall() :

Returns the expectation setter for the last expected invocation in the current thread. This method is used for expected invocations on void methods.


Solo necesita EasyMock.expectLastCall(); cuando necesite verificar más que cualquier otra cosa que no sea "Que se llamó al método. (Igual que para establecer la expectativa)"

Diga que desea verificar cuántas veces se llamó al método para que agregue cualquiera de:

EasyMock.expectLastCall().once(); EasyMock.expectLastCall().atLeastOnce(); EasyMock.expectLastCall().anyTimes();

O digamos que quieres lanzar una excepción.

EasyMock.expectLastCall().andThrow()

Si no te importa, entonces EasyMock.expectLastCall(); no es obligatorio y no hace ninguna diferencia, su declaración "obj.methodThatReturnsVoid(EasyMock.<String>anyObject());" es suficiente para establecer la expectativa.


Te estás perdiendo EasyMock.verify (..)

MyObject obj = EasyMock.createMock(MyObject.class); MySomething something = EasyMock.createMock(MySomething.class); EasyMock.expect(obj.methodThatReturnsSomething()).andReturn(something); obj.methodThatReturnsVoid(EasyMock.<String>anyObject()); // whether I comment this out or not, it works EasyMock.expectLastCall(); EasyMock.replay(obj); // This method calls the obj.methodThatReturnsVoid() someOtherObject.method(obj); // verify that your method was called EasyMock.verify(obj);