gpt4 book ai didi

java - TestNG:@BeforeClass 方法失败时会跳过所有后续测试类吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:22:23 25 4
gpt4 key购买 nike

我的设置:

  • 一个包含@BeforeClass 方法的TestBase 类
  • 几个测试类 从 TestBase 类扩展并包含一个 @BeforeClass 方法
  • testNG 6.8.8

为什么要这样设置?:

  • 我需要 TestBase 类中的 @BeforeClass 来提供所有测试类都需要的设置,我不想在每个测试类中重复。例如依赖于线程 ID 的登录凭据。
  • TestBase 类还实例化了 Selenium WebDriver
  • 我需要测试类中的@BeforeClass 来初始化所有@Test 方法将需要使用但只需要(或必须)为所有测试构建/调用一次的所有内容。这包括对所述 WebDriver 实例的调用(这就是“普通”构造函数在这里不起作用的原因)

这是发生了什么:

当我通过 testNG xml 文件运行测试并且其中一个测试类的 @BeforeClass 方法中存在异常时,所有后续测试类都被 TestNG 跳过.

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

例如,当我将 TestBase 类中的注释更改为 @BeforeSuite 时,将运行所有测试,即使在 @BeforeClass 中出现异常方法。

示例:

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

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>

带有@BeforeClass 方法的 TestBase 类:

public abstract class RunAllTestClassesBase {

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

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

public class RunAllTestClasses01 extends RunAllTestClassesBase {

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

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

最佳答案

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

关于java - TestNG:@BeforeClass 方法失败时会跳过所有后续测试类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476604/

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