我的设置:
>包含@BeforeClass方法的TestBase类
>几个Test类从TestBase类扩展而且还包含@BeforeClass方法
> testNG 6.8.8
为什么这样设置?:
>我需要TestBase类中的@BeforeClass来提供所有测试类都需要的设置,我不想在每个Test类中重复.例如,与线程ID相关的登录凭据.
> TestBase类还实例化Selenium WebDriver
>我需要Test类中的@BeforeClass来初始化所有@Test方法需要使用的所有内容,但是只需要(或必须)为所有测试构建/调用一次.这包括对所述WebDriver实例的调用(这就是“普通”构造函数在这里不起作用的原因)
这是发生的事情:
当我通过testNG xml文件运行测试并且其中一个Test类的@BeforeClass方法中存在异常时,TestNG会跳过所有后续测试类.
为什么会这样?怎么预防呢?
例如,当我将TestBase类中的注释更改为@BeforeSuite时,即使@BeforeClass方法中存在异常,也会运行所有测试.
例:
运行xml文件时,将跳过完整的RunAllTestClasses02类.
testNG xml文件:
带有@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);
}
}