2012-07-13 8 views
5

Una vez que agregue la anotación RunWith, es decir @RunWith(PowerMockRunner.class) ¡Spring Autowire ya no funciona!¿Por qué el Spring Autowire deja de funcionar cuando agrego la anotación "RunWith"?

class B { 
    @Autowire 
    SessionFactory session; 
} 

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

class Testing { 

    @Test 
    methodA(){ 
    //mehod 
    } 

    @Test 
    methodD(){ 
    }  
} 

Ahora, método A hace una llamada a la clase B, pero debido a RunWith(PowerMockRunner) anotación, la Autowiring no está funcionando. ¡Cualquier ayuda sería muy apreciada!

+1

Lo que hace el 'antes' caso similar. @Autowire no solo funciona. ¿Estabas usando algún Spring test runner o MockitoJUnitRunner u otra cosa cuando funcionaba antes? – jhericks

+1

En lugar de cableado automático, use Whitebox o setters para establecer el campo como simulacro. Obtienes más control de lo que está sucediendo en tu clase de esa manera. –

+0

Hola jhericks, cuando se estaba ejecutando, el RunWith dijo RunWith (SpringJUnit4ClassRunner) – TimeToCodeTheRoad

Respuesta

1

La primavera no es mágica (aunque a veces lo parezca). En ningún lugar de su código le está dando a la primavera la oportunidad de iniciar un contexto de aplicación y hacer su trabajo de cableado automático de sus granos. Necesita comenzar el contexto usted mismo o cambiar su prueba para usar @RunWith(SpringJUnit4ClassRunner.class). Desafortunadamente JUnit solo admite un único corredor a la vez, por lo que deberá dejar de usar PowerMockRunner.

Cuestiones relacionadas