当前位置: 首页 > 面试题库 >

TestNG retryAnalyzer仅在方法@Test中定义时起作用,而在类的@Test中不起作用

松高爽
2023-03-14
问题内容

这按预期工作,测试失败(由于haltTesting()),并重复了2次

public class A0001_A0003Test extends TestControl {

    private Kunde kunde = Kunde.FR_WEHLITZ;

    @Test(retryAnalyzer = TestRepeat.class, groups = {TestGroups.FAILED}, description = "verify adress")
    public void testkundenDaten_Angaben() throws Exception {
        bifiTestInitial();
        testActions.selectKunde(kunde);
        haltTesting();
    }
}

但是因为我在一堂课中有多个测试,所以我在课上定义了repeatAnalyzer

@Test(retryAnalyzer = TestRepeat.class)
public class A0001_A0003Test extends TestControl {

    private Kunde kunde = Kunde.FR_WEHLITZ;

    @Test(groups = {TestGroups.FAILED}, description = "verify adress")
    public void testkundenDaten_Angaben() throws Exception {
        bifiTestInitial();
        testActions.selectKunde(kunde);
        haltTesting();
    }
}

但是文档没有重复测试,它说:

类级别的@Test注释的作用是使该类的所有公共方法都成为测试方法,即使它们没有被注释也是如此。如果要添加某些属性,仍然可以在方法上重复@Test批注。

所以应该是可能的,还是我期望得到错误的结果?


问题答案:

我的解决方案是为该方法中的所有方法设置一个retryAnalyzer
@BeforeSuite。但是不要在beforeMethod中设置它,因为这样每次调用时都会使用新的counter => endless
loop重新创建它。

@BeforeSuite(alwaysRun = true)
public void beforeSuite(ITestContext context) {
     TestRepeat testRepeat = new TestRepeat();
     for (ITestNGMethod method : context.getAllTestMethods()) {
         method.setRetryAnalyzer(testRepeat);
     }
}


 类似资料:
  • 问题内容: 我有以下测试: 但是JUnit报告说,测试失败了,尽管它按预期方式抛出。 我是否需要配置其他东西才能运行此程序? 我现在用 当我删除前缀时,仍然出现错误。 我得说我是在Eclipse上运行这些测试,但它配置为使用JUnit 4 Runner。 问题答案: 问题是,嵌套测试的类是的扩展。由于这是JUnit 3样式,因此注释不起作用。 现在,我的测试班是一个单独的班。

  • 我正在使用演示APi(http://dummy.restapiexample.com/update) 我有一个响应类UpdateResponse 我有一个Api类和一个APIInterface 和对话框而不是主活动 在APIInterface中使用PUT方法有一个@path(id)和三个@fields(name、salary、age) 下面是UpdateResponse类代码 Api接口代码如下

  • 问题内容: 在以下示例中,我希望Deepcopy可以创建字段的副本,而不仅仅是复制引用。这里发生了什么,有什么简单的方法可以解决? 输出: 问题答案: 深层复制(默认情况下)仅适用于实例级别的属性-不适用于类级别-唯一的多个含义并没有多大意义… 将您的代码更改为:

  • 我在Angular中有一个自定义验证的表单构建器,但我在自定义验证中读取文件后无法获取文件的类型。 下面是StackBlitz: https://stackblitz.com/edit/Angular-ivy-atwqqc?file=src%2fapp%2fapp.component.ts TS文件

  • 我有WebView,它正在使用JS加载超文本标记语言。从WebView我调用JS函数,它正在寻找超文本标记语言中的一些文本。在此函数中,我有将WebView滚动到下一个匹配文本的命令: 如果我将WebView放在ScrollView中(如下面的代码所示),WebView将不会滚动(即使命令< code>webView.scrollTo(x,y)也不会滚动)。但是如果我把它放在ScrollView之

  • 这是我的模块信息: 这是我的父gradle构建文件: 这是我的客户端模块构建文件: 我正在尝试获取FXMLLoader的资源,但我根本无法让它工作。我已经挣扎了两个小时,现在我真的很绝望。我尝试了所有可能的文件名组合,每个可能的位置,但仍然返回null。 我还尝试了,但它也不工作。 有人能帮我吗?我将非常感激。