Tengo una gran cantidad de casos de prueba que se ejecutan con Spring Junit Support con las siguientes anotaciones en cada prueba.Cómo crear y utilizar una anotación personalizada que tenga anotaciones Spring + JUnit Test Config?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
En lugar de poner todas estas anotaciones en cada clase de prueba que desea crear una anotación personalizada y utilizarlo.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface SpringJUnit4TestConfig {
}
Pero cuando uso este Custom Annotation Spring Injection no sucede en absoluto.
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
¿Qué es lo que me falta falta aquí?
PD: Pero JUnit's @RunWith y Spring's @Transactional, @ContextConfiguration tienen @ Heredado ... Así que pensé que debería funcionar. Pero por ahora lo supero con un trabajo completo. Creó una clase de Resumen Basado y puso todas esas Anotaciones en ella y los casos de prueba extendiendo esa clase Base.
Debo usar solo @Target ({ElementType.TYPE}) No creo que vayas a usar esto en un campo o parámetro, ¿o sí? – Koitoer
Tienes razón. Esta anotación personalizada debe ser solo aplicación en ElementType.TYPE. –
Yo también quería hacer exactamente lo mismo. Al leer la pregunta y la respuesta, creé una anotación que usa todas las configuraciones excepto '@ RunWith' y parece estar funcionando bien hasta ahora. Yo uso '@RunWith (SpringJUnit4ClassRunner.class)' en cada clase TestCase. – ykesh