gpt4 book ai didi

java - 在失败之前自动重试所有测试 3 次

转载 作者:行者123 更新时间:2023-11-30 07:28:59 24 4
gpt4 key购买 nike

我们正在使用 TestNG 进行集成测试。我们最近从 jUnit 进行了转换,并且过去常常使用 org.junit.rules.TestRule 自动重试每个测试最多 3 次,然后才会将其计为失败。当测试用例偶尔失败时,这消除了很多误报。

在我们转换为 TestNG 的过程中,这个重试规则被忽略了,现在我们有一堆“失败”的测试用例,它们实际上是误报。

我找到了几篇关于如何自动重新运行 TestNG 测试用例的文章:

https://jepombar.wordpress.com/2015/02/16/testng-adding-a-retryanalyzer-to-all-you-tests/

http://mylearnings.net/11.html

其要点是您可以为每个带有 @Test 注释的测试用例指定一个 retryAnalizer。我设置了自己的分析器并将其应用于测试用例,并且有效。但是,当我们希望套件中的每个测试用例都执行此操作时,手动将重试分析器应用于每个测试用例并不是一个好的解决方案。 jepombar.wordpress.com 上的文章展示了一种将其应用于类中所有测试的方法,但无论出于何种原因,它似乎并不像编写的那样工作。

我制作了以下IAnnotationTransformer:

public class RetryListener implements IAnnotationTransformer {

@Override
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
IRetryAnalyzer retry = annotation.getRetryAnalyzer();
if (retry == null) {
annotation.setRetryAnalyzer(RetryRule.class); // my TestNG RetryAnalizer implementation
}
}

}

我将它应用到这样的类中:

@Listeners(RetryListener.class)
public class FooTest extends SeleniumMockedTest {
...
}

这不起作用; RetryListener.transform() 中的代码永远不会执行,因此 RetryRule 永远不会添加到该类的任何测试用例中。

我怎样才能让它发挥作用?

或者,更好的是,我真正的问题是:如何让集成测试套件中的所有测试用例在失败算作实际失败之前自动尝试 3 次?

最佳答案

我也无法使用@Listeners让它工作,但我可以使用命令行让它工作。例如:

java org.testng.TestNG -listener MyTransformer testng.xml

使用@Listeners无法工作可能是一个错误。您可以报告该问题here .

关于java - 在失败之前自动重试所有测试 3 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36413345/

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