form docs spring spring-test spring-test-dbunit

spring - docs - ¿Qué son los TestExecutionListeners y qué hacen?



spring input (1)

TestExecutionListeners proporciona varios tipos de funcionalidad para las pruebas que se ejecutan en el marco de Spring TestContext.

Si está interesado en lo que hace un oyente en particular, la mejor manera de averiguarlo es leer el Javadoc para la clase correspondiente. Además, el capítulo de Pruebas del manual de referencia de Spring explica en detalle cómo usar cada uno de los oyentes y lo que hacen.

En su caso particular, si no está usando @DirtiesContext , entonces no necesita usar el DirtiesContextTestExecutionListener . En cuanto a DependencyInjectionTestExecutionListener y TransactionalTestExecutionListener , es probable que los necesite para inyectar dependencias en su prueba (por ejemplo, a través de @Autowired , @Inject , @Resource , etc.) y para pruebas transaccionales (es decir, pruebas anotadas con @Transactional ).

Tenga en cuenta también que los escuchas mencionados están habilitados de forma predeterminada. Entonces, si ha estado usando Spring TestContext Framework sin ningún tipo de escuchas personalizados como el de DbUnit, entonces nunca se dio cuenta de que existían los oyentes. La sección sobre la configuración de TestExecutionListener en el manual de referencia también debería ayudar a aclarar las cosas. Sin embargo, tenga en cuenta que algunas funciones, como la fusión y la detección automática de escuchas predeterminadas, solo están disponibles en Spring Framework 4.1+.

Saludos,

Sam (autor del Spring TestContext Framework)

Según tengo entendido, los TestExecutionListeners actúan como los métodos de @BeforeClass en JUnit. Lo que no entiendo es por qué necesito usar DependencyInjectionTestExecutionListener , TransactionalTestExecutionListener y DirtiesContextTestExecutionListener para usar DbUnitTestExecutionListener .

Normalmente, sin DbUnit, puedo crear y completar la base de datos. ¿Por qué de repente necesito usar estos escuchas para hacer un CRUD para mi base de datos?