2017-10-09 4 views
2

j'ai un costume de test TestNG pour un projet JAVA et, là, j'ai unTestNG @Test (invocationCount = 20) à une classe avec @Test (DataProvider = "somelist") à une méthode

@ Test (DataProvider = "ListOfObjects") Méthode annotée. Qui fournit la méthode avec environ 20 lignes de données. (Par conséquent, la méthode fonctionne 20 fois.) Maintenant, je veux exécuter cette classe pour 2 heures (partie du test SOAK connexes.) En moyenne, la classe prend environ 10 minutes pour single courir. Donc, je pense ou exécute la classe entière pendant 12 fois, et pense donc à utiliser @Test (invocationCount = 20) sur la classe elle-même. De meilleures idées?

Répondre

0

Vous pouvez extraire le test dans une méthode, puis créer une méthode de test avec un nombre d'appels raisonnablement élevé. Dans cette méthode de test, comparez l'heure avec une variable contenant l'horodatage du premier passage et, si elle a duré plus de 20 minutes, ignorez le test.

+0

J'ai plus de 10 ces classes et au sein de chaque classe, il y a au moins trois de ces méthodes. Ceux-ci sont divisés en fonction de Devicetype (IoT). Je ne pense pas pouvoir extraire des tests en une seule méthode. –

0

a trouvé une solution Embarrassant simple: l'ensemble Répétition Costume d'essai comme suit

@Test 
public void RepeatTestSuite() { 
    long startTime = new Date().getTime(); 
    while(!isTestFinished(startTime)) { 

      List<String> suites = new ArrayList<String>(); 
      suites.add("./SOAK_all41.xml"); //path of .xml file to be run-provide complete path 

      TestNG tng = new TestNG(); 
      tng.setTestSuites(suites); 

      tng.run(); //run test suite 
     }