2010-03-11 7 views

Respuesta

37

Dado que las pruebas se creará una instancia como un grano de primavera también, sólo tiene que implementar la interfaz ApplicationContextAware:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"/services-test-config.xml"}) 
public class MySericeTest implements ApplicationContextAware 
{ 

    @Autowired 
    MyService service; 
... 
    @Override 
    public void setApplicationContext(ApplicationContext context) 
      throws BeansException 
    { 
     // Do something with the context here 
    } 
} 
+0

No es posible en primavera y hasta 3,0, hasta esta fecha. – ALOToverflow

+2

Extraño, estoy ejecutando todas mis pruebas de Spring 3.0 como esa ... – Daff

5

Si su clase de prueba se extiende a las clases JUnit primavera
(por ejemplo, , AbstractTransactionalJUnit4SpringContextTests o cualquier otra clase que se extienda a AbstractSpringContextTests), puede acceder al contexto de la aplicación llamando al método getContext().
Consulte javadocs para el paquete org.springframework.test.

+0

¿Hay alguna diferencia al usar AbstractTransactionalJUnit4SpringContextTests, o AbstractSpringContextTests versus simplemente extender ApplicationContextAware en mi prueba junit? ¿Qué beneficios brindan las 2 clases de pruebas abstractas sugeridas en esta respuesta? –

56

Esto funciona muy bien también:

@Autowired 
ApplicationContext context; 
+0

Confirmado, en Spring Integration 3.0.2. La mejor solución. – Wrench

+0

Sin embargo, esta solución solo es viable si la está utilizando en un bean administrado. Al implementar ApplicationContextAware funciona bien incluso en un POJO – Aditzu

+0

Funciona bien en la primavera 4.2 – cabaji99

Cuestiones relacionadas