TestNG:当@BeforeClass 方法失败时,是否会跳过所有后续测试 类?

TestNG: All subsequent Test classes are skipped when @BeforeClass method fails?

我的设置:

为什么要这样设置?:

情况如下:

当我 运行 通过 testNG xml 文件进行测试时,在其中一个测试 classes,然后 所有后续测试 classes 被 TestNG.

跳过

为什么会这样?如何预防?

例如,当我将 TestBase class 中的注释更改为 @BeforeSuite 时,那么 所有测试都是 运行,即使@BeforeClass 方法中的一个出现异常。

示例:

当您 运行 xml 文件时,将跳过完整的 RunAllTestClasses02 class。

testNG xml 文件:

<?xml version="1.0" encoding="UTF-8"?>

<suite name = "MiscSuite">
    <test name = "MiscTest">
        <classes >
            <class name="drkthng.misc.RunAllTestClasses01" />
            <class name="drkthng.misc.RunAllTestClasses02" />
        </classes>
    </test>
</suite>

TestBase class 使用@BeforeClass 方法:

public abstract class RunAllTestClassesBase {

    @BeforeClass
    public void beforeClass() {
        // do something that all Test classes will need
    }
}

测试 class 在@BeforeClass 方法中抛出异常:

public class RunAllTestClasses01 extends RunAllTestClassesBase {

    @BeforeClass
    public void beforeClass() {
        Assert.assertTrue(false);
    }

    @Test
    public void Test01() {
        Assert.assertTrue(true);
    }
}

这是 Testng 中的错误。在 6.9.5 中解决。请升级。

尝试添加 @AfterClass(alwaysrun = true) or/and @AfterMethod(alwaysrun=true) 因为默认情况下,如果 BeforeClass 或 BeforeMethod 未完成,它们将被跳过。

有关 testNG 配置失败、策略和 alwaysRun 的文档解释了 whether/when 配置失败导致侦听器方法(alwaysRun 和其他侦听器)被跳过、失败策略和最佳实践。