Springockito
Extensión de Spring para simplificar la creación de mocks en los test. Ofrece la posibilidad de realizar la creación de los mocks mediante los xml de Spring o mediante anotaciones en el mismo test.
Ejemplo con anotaciones
Agregar la siguiente dependencia en el pom.xm del proyecto.
<dependencies>
... <dependency> <groupId>org.kubek2k</groupId> <artifactId>springockito-annotations</artifactId> <version>1.0.8</version> <scope>test</scope> </dependency> ...
</dependencies>
En el ejemplo se prueba el método "talk" de la clase "VoiceService", el cual debe ejecutar una o dos veces el método "play" de la clase "Audio". Esta ultima es la clase que mockeamos para verificar las ejecuciones de su métodos.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = SpringockitoContextLoader.class,
locations = {"classpath:spring/jenkins-speech-integration-test.xml"})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) public class VoiceServiceTest {
@Autowired private VoiceService instance; @ReplaceWithMock @Autowired private Audio audio;
@Test public void talk_messageWithPreSound_executePlayMethodTwoTimes() throws Exception { String message = "Hola"; instance.talk(message); verify(audio, times(2)).play((InputStream) any());
}
@Test public void talk_messageWithoutPreSound_executePlayMethodOneTimes() throws Exception { instance.setPreSound(""); String message = "Hola"; instance.talk(message); verify(audio, times(1)).play((InputStream) any()); }
}
En el atributo “loader” de la anotación “ContextConfiguration” hay que setear la clase “SpringockitoContextLoader” de Springockito, esta clase es la encargada de realizar las sustituciones de las clases reales por los mocks.