如果 TestNG 测试失败,我想重试某些方法特定的代码,而不是重试整个测试。
我从这里研究了自定义测试监听器和重试分析器 https://github.com/haojiwu/testng-retry-example 。如果失败,这将重新运行整个测试,我想要一些方法特定的代码。
@Test()
public void testStuff() {
String var1;
String var2;
/* Code specific to this test and should only be ran once. */
doSomething(param1)
/* Contains code looking for files that may or not be ready by the time the code is ran. */
/* I want to try this code then wait and retry up to a max of 3 retries. */
assertStuff(var1, var2);
}
我想在 doSomething(param1) 中执行代码,如果断言失败,则尝试在assertStuff(var1, var2) 中执行代码,我想等待 5 秒,然后重试assertStuff(var1, var2) 代码如果断言通过,则测试通过,否则最多重试 2 次。
最佳答案
您可能想使用 TestNG retryAnalyzer功能,但仅适用于 assertStuff(var1, var2)
部分。
因此,您应该将 doSomething(param1)
移动到一个单独的方法中,并用 @BeforeClass
(或 @BeforeMethod
)进行注释:
...
@BeforeClass
public void initSomething() {
doSomething(param1);
}
@Test(retryAnalyzer = ThreeRetries.class)
public void testStuff() {
String var1;
String var2;
assertStuff(var1, var2);
}
或者,您可以使用 @Test
注释作为强制部分并声明测试之间的依赖关系,例如:
...
@Test
public void initSomething() {
doSomething(param1);
}
@Test(retryAnalyzer = ThreeRetries.class, dependsOnMethods = "initSomething")
public void testStuff() {
String var1;
String var2;
assertStuff(var1, var2);
}
关于java - 如果测试失败,则重试 TestNG 代码中的特定代码段,而不是整个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56709945/