2015-01-05 13 views
6

Mam następujące usługi wiosny:Autowire usługa Wiosna w teście JUnit

@Service 
public class MyService { 
    public List<int> getIds(Filter filter){ 
     ... 
    } 
} 

i klasę konfiguracji:

@Configuration 
public static class MyApplicationContext { 

    @Bean 
    public Filter filter(ApplicationContext context) { 
     return new Filter(); 
    } 
} 

Teraz chciałbym utworzyć badanej jednostki w celu sprawdzenia, czy metoda getIds zwraca poprawne wyniki. I stworzył następujący test JUnit:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes=MyApplicationContext.class,             
         loader=AnnotationConfigContextLoader.class) 
public class AppTest 
{ 
    @Autowired 
    Filter filter; 

    @Autowired 
    MyService service; 
} 

Kompilator znajdzie właściwą fasoli dla klasy filtr, ale rzuca „BeanCreationException: Nie można autowire pole” wyjątek dla zmiennej usług. Próbowałem dodać klasę usługi do ContextConfiguration.classes, ale potem kompilator wygenerował wyjątek "IllegalStateException: Failed to load ApplicationContext".

Jak dołączyć MyService do ContextConfiguration?

+0

pasta pełny stos ślad proszę? I czy zdefiniowałeś jakieś ziarna w xml i pomógłbyś (jeśli w ogóle) – SMA

+0

Musisz [powiedzieć wiosna] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context /annotation/ComponentScan.html) do skanowania adnotacji '@ Service' –

Odpowiedz

8

Dodaj następującą adnotację do MyApplicationContext za usługi mają być skanowane @ComponentScan("myservice.package.name")

Powiązane problemy