0

虽然 configfailurepolicy 值设置为“继续”,但重试测试被跳过。

例子:

testng.xml - 在套件级别,configfailurepolicy 值设置为“继续”

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="1"
    configfailurepolicy="continue">
    <test name="Front-End">
        <classes>
            <class
                name="com.tests.ExcepionAfterMethodTest">
            </class>
        </classes>
    </test>
</suite>

测试:在配置(即@AfterMethod)方法中抛出异常导致失败。并使用 RetryAnalyzer 重试失败的测试。

import org.testng.Assert;
import org.testng.annotations.Test;

public class ExcepionAfterMethodTest{

    @BeforeMethod(alwaysRun=true)
    public void beforeMethod() {
        System.out.println("Before Method");
    }
    
    @Test (alwaysRun=true, retryAnalyzer=RetryAnalyzer.class)
    public void method() {
        System.out.println("Method");
        Assert.assertTrue(false);
    }

    @Test (alwaysRun=true)
    public void method1() {
        System.out.println("Method1");
    }

    @AfterMethod(alwaysRun=true)
    public void afterMethod() throws Exception {
        System.out.println("After Method");
        throw new Exception();
    }
}

RetryAnalyzer:如果发生故障,将重试一次。

import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;

public class RetryAnalyzer implements IRetryAnalyzer {

    private int counter = 0;
    private int retryLimit = 1;

    @Override
    public boolean retry(ITestResult result) {
        if (counter < retryLimit) {
            counter++;
            return true;
        }
        return false;
    }
}

结果:由于@AfterMethod 失败,重试测试,但跳过了@Test。因此,'Method' 不会打印在第 5 行的结果中。

之前的方法

方法

后方法

之前的方法

后方法

方法1

后方法

预期结果:由于 configfailurepolicy 配置为“继续”,因此不应跳过重试测试。因此,期望 'Method' 应该打印在第 5 行的结果中,如下所示。

之前的方法

方法

后方法

之前的方法

方法

后方法

方法1

后方法

4

1 回答 1

0

该问题已通过 7.1.0 版本的 TestNG 修复。

参考:https ://github.com/cbeust/testng/issues/2148

于 2020-02-04T11:54:23.953 回答