Ho un numero elevato di casi di test che funzionano con Spring Junit Support con le seguenti annotazioni su ciascun Test.Come creare e utilizzare un'annotazione personalizzata con annotazioni Spring + JUnit Test Config?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
Invece di mettere tutte queste annotazioni su ogni classe Test Voglio creare un'annotazione personalizzato e utilizzarlo.
@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 {
}
Ma quando uso questa Annotazione a molla personalizzata non si verifica affatto.
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
Cosa mi manca qui?
PS: Ma JUnit's @RunWith e Spring's @Transactional, @ContextConfiguration hanno tutti @ Inherited.. Così ho pensato che dovrebbe funzionare. Ma per ora lo passo attraverso un lavoro in giro. Crea una classe Abstract Based e metti tutte quelle annotazioni su di essa e i test case che estendono quella classe Base.
Dovrei usare solo @Target ({ElementType.TYPE}) Non penso che lo userete in un campo o parametro, o lo farete? – Koitoer
Hai ragione. Questa annotazione personalizzata dovrebbe essere l'applicazione solo su ElementType.TYPE. –
Anch'io volevo fare esattamente la stessa cosa. Leggendo la domanda e la risposta ho creato un'annotazione che utilizza tutte le configurazioni eccetto '@ RunWith' e sembra che stia funzionando bene finora. Io uso '@RunWith (SpringJUnit4ClassRunner.class)' su ogni classe di TestCase. – ykesh