2011-07-01 16 views
8

Mam projekt maven spring (najnowsza wersja) i chcę napisać kilka testów junitowych (najnowsza wersja).testowanie sprężyny jonowej

Problem polega na tym, że moje fasolki szparagowe są autowyredowane, a kiedy wywołuję je z testu junit, otrzymuję wyjątki wskaźnika zerowego, ponieważ wiosna ich nie automatyzuje.

Jak mogę wczytać kontekst, aby rzeczy były autowyredowane?

Odpowiedz

21

Czy przestudiowałeś rozdział Testing w źródłowej dokumentacji referencyjnej? Oto przykład należy zacząć:

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

    @Resource 
    private FooService fooService; 

    // class body... 
} 

Jeśli jesteś w com.example.MyTest w /src/test/java, trzeba będzie /src/test/resources/com/example/MyTest-context.xml - ale wyjątki pokaże ci drogę.

+1

+1 przez 22 sekundy :) – abalogh

+0

:-) Nasz fragment kodu jest podejrzanie podobny, czuję to samo, co obaj używaliśmy ;-). –

+0

http://static.springsource.org/spring/docs/3.0.x/reference/testing.html, nic dziwnego :) – abalogh

5

Powinieneś użyć SpringJUnit4ClassRunner w swoich klasach testowych i użyć @Resource (lub @Autowired) na polu w klasie testowej, która zawiera komponent bean. Powinieneś rozważyć posiadanie specjalnego kontekstu testu Wiosenna konfiguracja, która używa kodów pośrednich, aby twoje testy były oryginalnymi testami jednostkowymi i nie opierały się na całym kontekście aplikacji.

12

Jest to możliwość:

@RunWith(SpringJUnit4ClassRunner.class) 
// ApplicationContext will be loaded from "/applicationContext.xml" 
// in the root of the classpath 
@ContextConfiguration({"/applicationContext.xml"}) 
public class MyTest { 
// class body... 
} 

Zwykle jest to dobry pomysł, chociaż mieć test-ApplicationContext dla infrastruktury testowej.

Powiązane problemy