Unit testing TestNG中的嵌套测试

Unit testing TestNG中的嵌套测试,unit-testing,testng,parameterized-unit-test,Unit Testing,Testng,Parameterized Unit Test,在TestNG中,我有一个参数化的测试a,它自动从一个数据提供程序创建n个测试,以及一个测试B,每次a中的测试完成时都应该执行,因为我想利用在a中获得的结果。换句话说,我想知道是否有可能实现以下功能: 给定参数化的@Test a(dataProvider=“inputList”)和@Test B,TestNG将创建以下单元测试,并按以下顺序执行它们: Test A1 Test B1 (Based on A1 result) Test A2 Test B2 (Based on B2 result)

在TestNG中,我有一个参数化的测试a,它自动从一个
数据提供程序
创建n个测试,以及一个测试B,每次a中的测试完成时都应该执行,因为我想利用在a中获得的结果。换句话说,我想知道是否有可能实现以下功能:

给定参数化的
@Test a(dataProvider=“inputList”)
@Test B
,TestNG将创建以下单元测试,并按以下顺序执行它们:

Test A1
Test B1 (Based on A1 result)
Test A2
Test B2 (Based on B2 result)
...

Test An
Test Bn (Based on An result)
是否可以使用任何现有的TestNG标记?我知道我可以将
@Test B
视为
@After
,但这不能理解为TestNG是一种测试,我需要将测试B视为以后报告的测试。

您可以使用TestNG。e、 g:

在工厂方法上

公共类TestClass{
私人终审法院;
私人最终INTP2;
公共测试类(intp1,intp2){
这是1.p1=p1;
这是p2=p2;
}
@工厂(dataProvider=“inputList”)
公共静态对象[]createTestClasses(){
返回新对象[]{
新的TestClass(1,1),
新的TestClass(1,0),
新的TestClass(1,-1),
};
}
@试验
公共图书馆A(){
//测试'A'代码,将结果存储在某个类成员字段中
}
@测试(dependsOnMethods={“A”})
公共空间B(){
//测试'B'代码,使用存储的测试'A'结果`
}
}
在构造函数上

公共类TestClass{
私人终审法院;
私人最终INTP2;
@工厂(dataProvider=“inputList”)
公共测试类(intp1,intp2){
这是1.p1=p1;
这是p2=p2;
}
@数据提供者
公共静态对象[][]inputList(){
返回新对象[][]{
{1, 1},
{1, 0},
{1, -1}
};
}
@试验
公共图书馆A(){
//测试'A'代码,将结果存储在某个类成员字段中
}
@测试(dependsOnMethods={“A”})
公共空间B(){
//测试'B'代码,使用存储的测试'A'结果`
}
}

请参阅TestNG文档页面中的。

已经提供了很好的答案,如果您只是希望按要求的顺序执行@Test methods,那么您可以使用优先级。如果要指定方法之间的依赖关系,则可以使用dependsOnMethods。下面是一个简单的例子

  @Test(priority=1)
public void testA1(){

}

@Test(priority=2,dependsOnMethods="testA1")
public void testB1(){

}

@Test(priority=3)
public void testA2(){

}

@Test(priority=4,dependsOnMethods="testA2")
public void testB2(){

}

如果读者来自NUnit,他们可能熟悉PNunit的“同步测试”概念。下面的答案似乎有助于我在TestNG中实现相同的概念。(基本上,我只是为自己和其他人添加了一些关键字,这两种框架可能都适用)