@BeforeAll 和 @AfterAll 必须是 static 的原因

@BeforeAll@AfterAll 必须是 static 的原因

  • 执行时机

    • @BeforeAll 方法在所有测试方法之前运行。
    • @AfterAll 方法在所有测试方法之后运行。
  • 实例化前/后的执行

    • 因为 @BeforeAll 是在所有测试方法执行之前运行的,所以它在任何一个测试实例创建之前就必须执行。
    • 类似地,@AfterAll 是在所有测试方法执行之后运行的,所以它在所有测试实例销毁之后执行。
  • 静态方法的特性

    • 静态方法属于类本身,而不是类的实例。因此,可以在没有创建类的实例的情况下调用静态方法。
    • 使用静态方法可以确保 @BeforeAll 在任何测试实例创建之前运行,@AfterAll 在所有测试实例销毁之后运行。

举例说明

假设你有一个测试类 ExampleTest,包含 @BeforeAll@AfterAll 方法:

public class ExampleTest {

    @BeforeAll
    static void setUpAll() {
        // 执行全局初始化代码
    }

    @AfterAll
    static void tearDownAll() {
        // 执行全局清理代码
    }

    @Test
    void testMethod1() {
        // 第一个测试方法
    }

    @Test
    void testMethod2() {
        // 第二个测试方法
    }
}
  • setUpAll() 方法在 testMethod1()testMethod2() 之前运行,用于执行全局初始化操作。
  • tearDownAll() 方法在所有测试方法执行之后运行,用于执行全局清理操作。

因为 setUpAll()tearDownAll() 是静态的,它们不依赖于 ExampleTest 的任何实例,因此能够在测试类实例化之前和销毁之后正确运行。

反例说明

如果 @BeforeAll@AfterAll 方法不是静态的:

public class ExampleTest {

    @BeforeAll
    void setUpAll() {
        // 不能正确运行
    }

    @AfterAll
    void tearDownAll() {
        // 不能正确运行
    }

    @Test
    void testMethod1() {
        // 第一个测试方法
    }

    @Test
    void testMethod2() {
        // 第二个测试方法
    }
}

image-20240608180932747

  • JUnit 将无法在创建 ExampleTest 实例之前调用 setUpAll() 方法,因为实例方法需要依赖对象实例。
  • 同样,在销毁所有 ExampleTest 实例之后,也无法调用 tearDownAll() 方法。

因此,使用静态方法确保了 @BeforeAll@AfterAll 方法能够在正确的时间点运行,而不依赖于测试类的实例化状态。

总结

因此,使用静态方法确保了 @BeforeAll@AfterAll 方法能够在正确的时间点运行,而不依赖于测试类的实例化状态。

总结

通过要求 @BeforeAll@AfterAll 方法是静态的,JUnit 能够在测试类实例化之前和销毁之后正确地运行全局初始化和清理代码,从而确保测试环境的一致性和可靠性。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如果Null没有null

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值