Springockito

De Dos Ideas.
Saltar a: navegación, buscar

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.

Ver También