我有一个 TestNG Dataprovider 测试,如下所示:
输入.csv
id,priority,testData,...
T1,1,someData,...
T1,0,someData,...
读者
@DataProvider(name="abc")
public Object[][] readData(){
// Logic to read csv file.
}
测试
@Test(dataprovider="abc")
public void test(){
// Test code.
}
有许多输入文件,每个测试都包含一个优先级。我想单独运行优先级为 1 的测试。
如果没有数据提供者,我可以使用 IMethodInterceptor 过滤测试,如下所示。
class interceptor implements IMethodInterceptor {
@Override
public List<IMethodInstance> intercept(List<IMethodInstance> instance,
ITestContext context){
for(IMethodInstance method:instance){
if(method.getMethod().getPriority()==1){
// Add in new list and return it.
}
}
}
}
样品测试:
@Test(priority=1)
public void testA(){
print("A");
}
@Test(priority=2)
public void testB(){
print("B");
}
Output: A
由于数据提供者的优先级是动态的,因此我无法根据优先级过滤测试。
不应执行其他测试来代替 SKIPPED。