2011-07-01 15 views
8

Tengo un proyecto de resorte maven (última versión) y quiero escribir algunas pruebas junit (última versión).spring junit testing

El problema que tengo es que mis granos de primavera están autoconectados, y cuando los llamo desde la prueba junit, obtengo excepciones de puntero nulo, ya que la primavera no los autoajusta.

¿Cómo puedo cargar el contexto para que las cosas estén auto conectadas?

Respuesta

21

¿Has estudiado Testing capítulo en la documentación de referencia de Spring? He aquí un ejemplo que debe comenzar con:

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

    @Resource 
    private FooService fooService; 

    // class body... 
} 

Si se encuentra en com.example.MyTest en /src/test/java, necesitará /src/test/resources/com/example/MyTest-context.xml - pero las excepciones se le muestre el camino.

+1

+1 para los 22 segundos :) – abalogh

+0

:-) Nuestro código nos copia de manera sospechosamente similar, huelo la misma referencia que ambos usamos ;-). –

+0

http://static.springsource.org/spring/docs/3.0.x/reference/testing.html, no es de extrañar :) – abalogh

5

Debe usar SpringJUnit4ClassRunner en sus clases de prueba, y usar @Resource (o @Autowired) en el campo de su clase de prueba que contiene el bean. Debería considerar tener un contexto de prueba especial Configuración de Spring que use stubs para que sus pruebas sean pruebas de unidades genuinas, y no confíe en el contexto de la aplicación completa.

12

Esta es una posibilidad:

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

Por lo general, es una buena idea sin embargo de tener una prueba de applicationContext para su infraestructura de prueba.

Cuestiones relacionadas