@BeforeClass和继承-执行顺序

我有一个抽象基类,用作我的单元测试(TestNG

5.10)的基础。在该类中,我将初始化测试的整个环境,设置数据库映射等。此抽象类具有一个带有@BeforeClass注释的方法,该方法可以进行初始化。

接下来,我用具有@Test方法和@BeforeClass方法的特定类扩展该类。这些方法对环境进行类特定的初始化(例如,将一些记录放入数据库中)。

如何执行带@BeforeClass注释的方法的特定顺序?我需要先执行抽象基类中的那些,然后再执行扩展类中的那些。

例:

abstract class A {

@BeforeClass

doInitialization() {...}

}

class B extends A {

@BeforeClass

doSpecificInitialization() {...}

@Test

doTests() {...}

}

预期订单:

A.doInitialization

B.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

回到顶部