2017-10-09 133 views
2

我有一个Java项目一个TestNG的测试套装和,在那里我有一个TestNG的@Test(invocationCount = 20)与@Test(的DataProvider = “someList”)一类的方法

@测试(DataProvider =“ListOfObjects”)带注释的方法。它提供了大约20行数据的方法(因此该方法运行了20次)。 现在,我想运行这个类2小时(SOAK相关测试的一部分)。平均而言,类需要大约10分钟跑。所以我正在考虑或运行整个班级12次,因此我想在班级本身上使用@Test(invocationCount = 20)。 任何更好的想法?

回答

0

您可以在一个方法中提取测试,然后创建一个具有相当高的调用计数的测试方法。在该测试方法中,将时间与包含第一次运行时间戳的变量进行比较,如果运行时间超过20分钟,则跳过测试。

+0

我有超过10种这样的类和每一类内有这样的方法的至少3。这些是根据Devicetype(IoT)划分的。我认为我不能用一种方法提取测试。 –

0

找到令人尴尬简单的解决方案: 重复整个测试套装如下

@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 
     } 
相关问题