2013-02-11 9 views
12

Ho un esame della sorgente che utilizza:Utilizzando @RunWith (SpringJUnit4ClassRunner.class), è possibile accedere all'oggetto ApplicationContext?

@RunWith(SpringJUnit4ClassRunner.class) 

differenza del vecchio modo di test, che si estende dalle classi base di prova Spring, sembra esserci alcun modo ovvio per accedere al ApplicationContext che è stata caricata da molla using @ContextConfiguration

Come posso accedere all'oggetto ApplicationContext dai miei metodi di prova?

Grazie!

risposta

13

Dalla sezione Integration Testing della Primavera documentazione

@Autowired ApplicationContext

In alternativa che implementa l'interfaccia ApplicationContextAware, è possibile inserire il contesto dell'applicazione per la classe di test tramite l'annotazione @Autowired su un metodo field o setter. Per esempio:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration 
public class MyTest { 

    @Autowired 
    private ApplicationContext applicationContext; 

    // class body... 
} 
3

aggiungere un attributo @Autowired di ApplicationContext

@Autowired ApplicationContext applicationContext; 
3

Io uso questo:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("classpath:applicationContext.xml") 
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false) 
@FixMethodOrder(MethodSorters.NAME_ASCENDING) 
public class MyClassTest 
{ 
} 

e vado a proiettare costruire percorso -> Source -> aggiungere la posizione del vostro applicationContext.xml

io uso Maven modo che il applicationContext.xml è sotto src/main/resources.

Se si utilizza questo metodo si può avere un applicationContext multipla per il test per esempio:

@ContextConfiguration("classpath:applicationContext_Test.xml") 

o

@ContextConfiguration("classpath:applicationContext_V01.xml") 
Problemi correlati