2017-03-15 71 views
0

我想运行具有4个不同类的testng.xml文件。我想在完成另一个之后运行每一个。所以当第一节完成后,第二节开始,第二节完成后,第三节开始执行。到目前为止,我已经编写了这段代码,但它在同一时间触发了所有类。即使我尝试了parallel = false,但它不起作用。任何帮助将非常appreciated.Thanks如何一个接一个地运行TestNG类

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Smoke Test" parallel="false" preserve-order="true" verbose="2"> 
    <test name="Test 1"> 
     <classes> 
      <class name="class1"></class> 
     </classes> 
    </test> 
    <test name="Test 2"> 
     <classes> 
      <class name="class2"></class> 
     </classes> 
    </test> 
    <test name="Test 2"> 
     <classes> 
      <class name="class3"></class> 
     </classes> 
    </test> 
</suite> 

回答

0

这不是很相同的设置,但是我们用“未来”的属性在我们的一些工作有顺序处理:

<batch:job id="JOB_NAME" job-repository="jobRepository"> 
    <batch:step id="process1" next="process2"> 
     <batch:tasklet> 
      <batch:chunk> 
       processing info 
      </batch:chunk> 
     </batch:tasklet> 
    </batch:step> 

    <batch:step id="process2" next="process3"> 
     <batch:tasklet> 
      <batch:chunk> 
       processing info 
      </batch:chunk> 
     </batch:tasklet> 
     </batch:tasklet> 
    </batch:step> 

像这样的东西可能为你工作。

+0

这个xml如何在TestNG世界中工作?你能帮忙解释一下吗? –

0

为什么不只是将所有的测试类添加到相同的<test>标签,然后运行它们?

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Smoke Test" parallel="false" preserve-order="true" verbose="2"> 
    <test name="Test 1"> 
     <classes> 
      <class name="class1"></class> 
      <class name="class2"></class> 
      <class name="class3"></class> 
     </classes> 
    </test> 
</suite> 

这基本上会在每个Test类中一个接一个地执行测试方法。您可以通过将System.out.println(Thread.currentThread().getId());添加到您的每个@Test方法来确认此情况。您应该看到正在打印的相同线程ID。

0

也许你在@Test注释中使用“优先级”和“dependsOnGroups”。该参数对订单更重要(请参阅6.10更改https://github.com/cbeust/testng/blob/master/CHANGES.txt)。

“优先”的例子。

此代码:

public class Class1 { 

    @Test(priority = 1) 
    public void test1() { 
     System.out.println("Class1 test1"); 
    } 

    @Test(priority = 2) 
    public void test2() { 
     System.out.println("Class1 test2"); 
    } 

} 

public class Class2 { 

    @Test(priority = 1) 
    public void test1() { 
     System.out.println("Class2 test1"); 
    } 

    @Test(priority = 2) 
    public void test2() { 
     System.out.println("Class2 test2"); 
    } 

} 

有结果:

Class1 test1 
Class2 test1 
Class1 test2 
Class2 test2 

实施例与 “dependsOnGroups”。

此代码:

public class Class1 { 

    @Test(groups = {"someGroup"}) 
    public void test1() { 
     System.out.println("Class1 test1"); 
    } 

    @Test(dependsOnGroups = {"someGroup"}) 
    public void test2() { 
     System.out.println("Class1 test2"); 
    } 

} 

public class Class2 { 

    @Test(groups = {"someGroup"}) 
    public void test1() { 
     System.out.println("Class2 test1"); 
    } 

    @Test(dependsOnGroups = {"someGroup"}) 
    public void test2() { 
     System.out.println("Class2 test2"); 
    } 

} 

有相同的结果:

Class1 test1 
Class2 test1 
Class1 test2 
Class2 test2 
0

测试名称标签应该是唯一的,我看到2个& 3级是相同的测试的名字,这就是为什么你正在看到问题。

如果您仍然看到该问题,请添加日志/附加信息。