当前位置: 首页 > 面试题库 >

@BeforeClass和继承-执行顺序

茅昀
2023-03-14
问题内容

我有一个抽象基类,用作我的单元测试(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"})-试试看。



 类似资料:
  • 这是另一堂课 和TESTNG XML-------- 当我在testNG中运行上述XML时,它没有执行@BeforeCLass和@AfterClass方法。它将输出显示为- [RemoteTestNG]在Open Test Test ONE中检测到TestNG版本7.2.0

  • 我在Java实践继承,面临以下问题: 父类的代码: 子类代码: 两者是分开的。java文件。当我尝试执行父类文件时,它可以工作,但由于某些原因,我甚至无法运行子类。这里有以下信息: 该文件于2月8日发布。java不是可执行的。请选择要运行的主类 我该如何解决这个问题?

  • 问题内容: 考虑下面的代码 基于我对类成员初始化和构造函数执行顺序的理解。我期望输出是 因为我相信类成员甚至在调用main方法之前就已初始化。但是当我运行程序时,我得到以下输出 我的困惑是,尽管Meal()Lunch()和PortableLunch()在Bread()Cheese()和Lettuce()之前运行,即使它们的构造函数被调用。 问题答案: 这些是实例字段 它们仅在创建实例时存在(执行)

  • FAQs in section [24]: [24.1] 如何表示“私有继承”? [24.2] 私有继承和组合(composition)有什么类似? [24.3] 我应该选谁:组合还是私有继承? [24.4] 从私有继承类到父类需要指针类型转换吗? [24.5] 保护继承和私有继承的关系是什么? [24.6] 私有继承和保护继承的访问规则是什么? 24.1 如何表示“私有继承”? 用 : priv

  • 本文向大家介绍Python多重继承的方法解析执行顺序实例分析,包括了Python多重继承的方法解析执行顺序实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python多重继承的方法解析执行顺序。分享给大家供大家参考,具体如下: 任何实现多重继承的语言都要处理潜在的命名冲突, 这种冲突由不相关的祖先类实现同名方法引起 这里B和C都实现了eat方法, 在 D 的实例上调用 d.eat(

  • 假设以下代码段使用@PrePersist和@PreUpdate注释并连接了类型继承: 问题:我们可以依赖回调方法的任何执行顺序吗? 例如,当持久化类A和B时,B中的prePersist方法会在A中的prePersist方法之前执行还是在A中的prePersist方法之前执行? 我们可以假设B中的prePersist将在类A被持久化之前执行吗?