即使数据提供者的一种方法失败,也不应跳过依赖于 TestNG 的方法

TestNG dependent method should not get skipped even if one method of dataprovider fails

假设我们在 TestNG 中有 2 个方法和 dataprovider。

@Test(dataProvider = dpA)
testA(String str){
    logger.info(str);
}

@Test(dataProvider = dpB, dependsOnMethods = {"testA"})
testB(String str){
    logger.info(str);
}

@DataProvider(name = "dpA")
public Object[][] dpA(){
    return new Object[][] { { "This test fails"}, {"This test passes"} };
}

@DataProvider(name = "dpB")
public Object[][] dpB(){
    return new Object[][] { { "new test"}, {"some test"} };
}

给定: testB 应该只在 testA 之后执行,这就是我们使用 dependsOnMethods.
的原因 当前场景: TestNG 会跳过 testB 即使来自数据提供者的任何案例失败。
目标: testB 应该 运行 如果来自数据提供者的任何一个案例通过。

目前dependsOnMethods是硬依赖,也就是说,必须完全满足它才能执行依赖方法。

A @DataProvider powered @Test 方法基本上只是多次 运行 相同 @Test 的一种方法(当然是使用多组数据而不是使用设置 @Test 方法的 invocationCount 属性时发生的相同数据)。

所以这在当前的 TestNG 中是无法实现的,如果不乱改测试结果等,并导致无法解释的行为。

如果这是您希望在 TestNG 中看到的内容,那么我建议您在 TestNG 问题页面中将此作为缺陷提交,并在 https://github.com/cbeust/testng/issues[=17 中开始对此进行讨论=]