@BeforeClass和继承-执行顺序
我有一个抽象基类,用作我的单元测试(TestNG
5.10)的基础。在该类中,我将初始化测试的整个环境,设置数据库映射等。此抽象类具有一个带有@BeforeClass
注释的方法,该方法可以进行初始化。
接下来,我用具有@Test
方法和@BeforeClass
方法的特定类扩展该类。这些方法对环境进行类特定的初始化(例如,将一些记录放入数据库中)。
如何执行带@BeforeClass
注释的方法的特定顺序?我需要先执行抽象基类中的那些,然后再执行扩展类中的那些。
例:
abstract class A { @BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
预期订单:
A.doInitializationB.doSpecificInitialization
B.doTests
实际订单:
B.doSpecificInitialization // <- crashes, as the base init is missing(A.doInitialization // <---not executed
B.doTests) // <-/
回答:
不要把@BeforeClass
上的abstract
类。从每个子类调用它。
abstract class A { void doInitialization() {}
}
class B extends A {
@BeforeClass
void doSpecificInitialization() {
super.doInitialization();
}
@Test
void doTests() {}
}
好像TestNG一样@BeforeClass(dependsOnMethods={"doInitialization"})
-试试看。
以上是 @BeforeClass和继承-执行顺序 的全部内容, 来源链接: utcz.com/qa/415078.html