2012-07-13 5 views
5

Po dodaniu adnotacji RunWith, czyli @RunWith(PowerMockRunner.class), funkcja Spring Autowire już nie działa!Dlaczego Spring Autowire przestaje działać po dodaniu adnotacji "RunWith"?

class B { 
    @Autowire 
    SessionFactory session; 
} 

@RunWith(PowerMockRunner.class) 
@PrepareForTest{SomeClass.class} 

class Testing { 

    @Test 
    methodA(){ 
    //mehod 
    } 

    @Test 
    methodD(){ 
    }  
} 

Teraz metoda A sprawia, że ​​wezwanie do klasy B, ale ze względu na RunWith(PowerMockRunner) adnotacji The autowiring nie działa. Każda pomoc będzie bardzo ceniona!

+1

Co oznacza „przed” sprawy wyglądają. @Autowire nie działa. Czy używasz jakiegoś wiosennego biegacza testowego lub MockitoJUnitRunnera lub czegoś innego, kiedy pracowałeś wcześniej? – jhericks

+1

Zamiast automatycznego okablowania, użyj Whitebox lub setters, aby ustawić pole na fałszywe. W ten sposób zyskujesz większą kontrolę nad tym, co dzieje się w twojej klasie. –

+0

hi jhericks, kiedy był uruchomiony, RunWith powiedział RunWith (SpringJUnit4ClassRunner) – TimeToCodeTheRoad

Odpowiedz

1

Wiosna nie jest magią (nawet jeśli wydaje się, że czasami). Nie, gdzie w swoim kodzie dajesz wiosnę szansę na uruchomienie kontekstu aplikacji i wykonanie pracy z automatycznym okablowaniem twoich ziaren. Musisz albo sam rozpocząć kontekst, albo przełączyć test na wersję @RunWith(SpringJUnit4ClassRunner.class). Niestety JUnit obsługuje tylko jednego biegacza naraz, więc musisz przestać używać PowerMockRunner.