我有一个抽象基类,我用它作为单元测试的基础(TestNG 5.10)。在这个类中,我初始化了测试的整个环境,设置数据库映射等。这个抽象类有一个方法,该方法带有@BeforeClass
进行初始化的注释。
接下来,我用我所拥有的特定课程来扩展该课程@Test
方法以及@BeforeClass
方法。这些方法对环境进行特定于类的初始化(例如,将一些记录放入数据库中)。
我如何执行特定命令@BeforeClass
带注释的方法?我需要抽象基类中的那些在扩展类中的那些之前执行。
Example:
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) // <-/
edit:下面的答案是针对JUnit,但无论如何我都会把它留在这里,因为它可能会有所帮助。
根据JUnit API http://junit.org/junit4/javadoc/latest/org/junit/BeforeClass.html:“超类的 @BeforeClass 方法将在当前类的方法之前运行。”
我测试了这个,它似乎对我有用。
然而,正如 @Odys 下面提到的,对于 JUnit 你需要有两个方法命名不同但否则将导致仅运行子类方法,因为父类方法将被隐藏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)