gpt4 book ai didi

java - 如果测试失败,则重试 TestNG 代码中的特定代码段,而不是整个测试

转载 作者:行者123 更新时间:2023-12-02 04:06:44 25 4
gpt4 key购买 nike

如果 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com