Pregunta

JUnit apoyo primavera bastante bien en lo siguiente: Con la RunWith y ContextConfiguration anotación, las cosas se ven muy intuitiva

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:dao-context.xml")

Esta prueba será capaz de funcionar tanto en Eclipse y Maven correctamente. Me pregunto si hay cosas similares para TestNG. Estoy pensando en mudarse a esta "nueva generación" Marco pero no me encontrar una coincidencia para las pruebas con la primavera.

¿Fue útil?

Solución

Otros consejos

Este es un ejemplo que trabajó para mí:

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestValidation extends AbstractTestNGSpringContextTests {

    public void testNullParamValidation() {
        // Testing code goes here!
    }
}

La primavera y TestNG trabajan bien juntos, pero hay algunas cosas a tener en cuenta. Aparte de la subclasificación AbstractTestNGSpringContextTests, es necesario ser conscientes de cómo interactúa con TestNG estándar de anotaciones de instalación / desmontaje.

TestNG tiene cuatro niveles de configuración

  • BeforeSuite
  • BeforeTest
  • BeforeClass
  • BeforeMethod

que se producen exactamente como era de esperar (gran ejemplo de API autodocumentado). Todos ellos tienen un valor opcional llamado "dependsOnMethods" que pueden tomar una cuerda o String [], que es el nombre o nombre (s) de los métodos en el mismo nivel.

La clase AbstractTestNGSpringContextTests tiene un método llamado anotada BeforeClass springTestContextPrepareTestInstance, que debe establecer el método de configuración dependiendo de si está utilizando una clase autowired en ella. Para los métodos, usted no tiene que preocuparse por el autowiring, ya que se produce cuando la clase de prueba se configura en que antes de método de clase.

Esto sólo deja abierta la cuestión de cómo se puede utilizar una clase autowired en un método anotado con BeforeSuite. Puede hacerlo llamando manualmente springTestContextPrepareTestInstance -. No, mientras que su configuración por defecto para hacer esto, lo he hecho varias veces con éxito

Así, para ilustrar, una versión modificada del ejemplo de Arup:

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestValidation extends AbstractTestNGSpringContextTests {

    @Autowired
    private IAutowiredService autowiredService;

    @BeforeClass(dependsOnMethods={"springTestContextPrepareTestInstance"})
    public void setupParamValidation(){
        // Test class setup code with autowired classes goes here
    }

    @Test
    public void testNullParamValidation() {
        // Testing code goes here!
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top