2011-10-07 17 views
21

L'attributo dependsOnMethods dell'annotazione @Test funziona correttamente quando il test da utilizzare dipende dalla stessa classe del test con questa annotazione. Ma non funziona se il metodo to-be-tested e il metodo depend-on sono in classi diverse. L'esempio è il seguente:TestNG dependsOnMethods dalla classe differente

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

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

C'è un modo per aggirare questa limitazione? Una facile via d'uscita è creare un test in class c2 che chiama c1.verifyConfig(). Ma questa sarebbe troppa ripetizione.

risposta

25

Inserire il metodo in group e utilizzare 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 
    } 
} 

Si raccomanda di verificare la configurazione in un @Before * e gettare se qualcosa va storto lì così i test non verranno eseguiti. In questo modo i test possono concentrarsi solo sui test.

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

Questo funziona bene quando si esegue il file di classe individuale durante l'esecuzione attraverso il file testing.xml ottenendo errore DependencyMap :: Method "LoanApprovalTest.testLoanApprova (java.util.Hashtable) [PRI: 0, esempio: COM .zions.release1.Sanity.LoanTestCases.LoanApprovalTest @ 3884b2] "dipende dal gruppo inesistente" CreateLoanAccountTest.testCreateLoanAccount " –