2013-02-11 17 views
12

mam test sprężyny, która używa:Korzystając z @RunWith (SpringJUnit4ClassRunner.class), można uzyskać dostęp do obiektu ApplicationContext?

@RunWith(SpringJUnit4ClassRunner.class) 

przeciwieństwie do starszego sposobu testowania, wyciągając z klas bazowych testowych Wiosna, wydaje się nie być oczywisty sposób, aby uzyskać dostęp do ApplicationContext który został załadowany przez wiosnę przy użyciu metody @ContextConfiguration

Jak uzyskać dostęp do obiektu ApplicationContext z moich metod testowania?

Dzięki!

Odpowiedz

13

W sekcji Integration Testing Spring Dokumentacji

@Autowired ApplicationContext

Jako alternatywę do realizacji interfejsu ApplicationContextAware można wstrzyknij kontekst aplikacji dla swojej klasy testowej za pomocą adnotacji @Autowired w metodzie field lub setter. Na przykład:

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

    @Autowired 
    private ApplicationContext applicationContext; 

    // class body... 
} 
3

Dodaj @Autowired atrybut ApplicationContext

@Autowired ApplicationContext applicationContext; 
3

Używam tego:

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

i przejdź do projektu budowy drogi -> Source -> dodać lokalizację applicationContext.xml

Używam Maven więc applicationContext.xml jest pod src/main/resources.

W przypadku korzystania z tej metody można mieć wiele ApplicationContext testowania na przykład:

@ContextConfiguration("classpath:applicationContext_Test.xml") 

lub

@ContextConfiguration("classpath:applicationContext_V01.xml") 
Powiązane problemy