2017-06-01 3 views
0

J'ai un test avec des entrées différentes, donc utilisé @DataProvider mais avant les entrées, de Object[][], est passé à un test, je veux créer des données qui est commune à tester avec toutes les entrées différentesComment supprimer des données seulement après que tous les tests, basés sur les entrées du fournisseur de données, sont exécutés?

@DataProvider(name = "test") 
public Object[][] createData() { 
    //create some data which is common for both john and bob 
    return new Object[][] { { "john" }, { "bob" } }; 
} 

@Test(dataProvider = "test") 
public void userOp(String name) { 
    //Perform some operations with user mention in `name`. For now let's just print the names 
    System.out.println(name); 
} 

Une fois TOUS les tests, avec des entrées différentes (par exemple, john et bob) sont exécutés, je veux supprimer les données que j'ai créées dans la méthode du fournisseur de données.

NOTE je peux utiliser @AfterClass pour supprimer ces données, mais qui peut gâcher mes autres tests en classe de test où je veux supprimer des données, une fois que je suis fait avec le test, pour lequel il a été créé.

Quelqu'un peut-il suggérer comment cela peut être réalisé?

Répondre

1

Déclarez @AfterMethod avec le paramètre ITestResult. Dans ITestResul t vous pouvez trouver les paramètres exacts utilisés dans votre méthode de test et supprimer les données associées. Dans @AfterClass il suffit de supprimer vos données communes.