J'effectue des centaines de tests sur un grand système de publication et j'aimerais paralléliser les tests en utilisant TestNG. Cependant, je ne trouve pas de moyen facile de le faire. Chaque cas de test instancie une instance de cet éditeur, envoie des messages, attend que ces messages soient publiés, puis vide le contenu des files d'attente de publication et compare les résultats attendus. Faire cela avec autant de tests (même si je paralyse en utilisant des threads, prend encore beaucoup de temps à compléter (1 jour ou plus)). Nous avons constaté qu'en testant ce type de système, il est préférable de démarrer le système une fois, d'exécuter tous les tests pour envoyer leurs messages, d'attendre que la publication fasse son travail, vider toutes les sorties et faire correspondre les résultats avec les tests. Vérifier. Par exemple, au lieu de ce qui suit:Comment changer TestNG dataProvider order
@Test
public void testRule1() {
Publisher pub = new Publisher();
pub.sendRule(new Rule("test1-a"));
sleep(10); // wait 10 seconds
pub.dumpRules();
verifyRule("test1-a");
}
Nous voulions faire quelque chose comme ce qui suit:
@Test
public void testRule1(bool sendMode) {
if(sendMode) {
this.pub.sendRule(new Rule("test1-a"));
}
else {
verifyRule("test1-a");
}
}
Si vous avez un fournisseur de données géré par tous les tests avec sendMode = true
puis effectuer dumpAllRules()
suivi en exécutant à travers tous les tests à nouveau avec sendMode = false
. Le problème est, TestNG appelle la même méthode deux fois, une fois avec sendMode = true
suivi de sendMode = false
. Y at-il de toute façon à accomplir cela dans TestNG?
Merci!