2011-10-07 4 views
21

El atributo dependsOnMethods de la anotación @Test funciona bien cuando la prueba de la que se depende es de la misma clase que la prueba que tiene esta anotación. Pero no funciona si el método a ser probado y el método dependiente están en diferentes clases. El ejemplo es el siguiente:TestNG dependsOnMethods de clase diferente

class c1 { 
    @Test 
    public void verifyConfig() { 
    //verify some test config parameters 
    } 
} 

class c2 { 
    @Test(dependsOnMethods={"c1.verifyConfig"}) 
    public void dotest() { 
    //Actual test 
    } 
} 

¿Hay alguna forma de evitar esta limitación? Una salida fácil es crear una prueba en class c2 que llame al c1.verifyConfig(). Pero esto sería demasiada repetición.

Respuesta

25

Ponga el método en group y use dependsOnGroups.

class c1 { 
    @Test(groups={"c1.verifyConfig"}) 
    public void verifyConfig() { 
    //verify some test config parameters 
    } 
} 

class c2 { 
    @Test(dependsOnGroups={"c1.verifyConfig"}) 
    public void dotest() { 
    //Actual test 
    } 
} 

Se recomienda comprobar la configuración en un @Before * y tirar, si algo va mal allí por lo que las pruebas no se ejecutarán. De esta forma, las pruebas pueden enfocarse solo en las pruebas.

class c2 { 
    @BeforeClass 
    public static void verifyConfig() { 
    //verify some test config parameters 
    //Usually just throw exceptions 
    //Assert statements will work 
    } 

    @Test 
    public void dotest() { 
    //Actual test 
    } 
} 
+3

Esto funciona bien cuando se ejecuta el archivo de clase individual mientras se ejecuta a través de archivos testing.xml conseguir DependencyMap error :: Método "LoanApprovalTest.testLoanApprova (java.util.Hashtable) [pri: 0, ejemplo: COM .zions.release1.Sanity.LoanTestCases.LoanApprovalTest @ 3884b2] "depende del grupo inexistente" CreateLoanAccountTest.testCreateLoanAccount " –

Cuestiones relacionadas