【问题标题】:JUnit 5. How to run code before / after all tests without extensionJUnit 5.如何在没有扩展的所有测试之前/之后运行代码
【发布时间】:2020-10-24 00:31:24
【问题描述】:

在所有测试之前,需要将数据插入数据库。
完成所有测试后,需要从数据库中删除所有数据。

在 TestNG 中,可以使用 @BeforeSuite 和 @AfterSuite 来做这些事情。
如何在 JUnit 5 中做这些事情?

在 Junit 5 中,@BeforeAll 注释标记了一个在类中的所有测试之前运行的方法。
@AfterAll 注解标记一个方法在一个类中的所有测试之后运行。

我在 stackoverflow 上找到了以下解决方案:
https://stackoverflow.com/a/51556718/6643395

但是:

  • 它仅适用于在所有测试之前,而不是在所有测试之后
  • 需要用这个扩展注释每个测试类。这并不好。在我的项目中,所有测试类都扩展了一些基础测试类。那么,为什么不在一个地方做这些事情呢?

【问题讨论】:

    标签: junit5


    【解决方案1】:

    也许它是后来添加的,但您引用的答案实际上包括一个挂钩,用于在所有类的所有测试完成后运行代码,使用 CloseableResource。这正是您要寻找的。​​p>

    您还可以使用扩展名注释您的超类,因为@ExtendWith 是继承的。如果您使用自定义元注释,则还必须将其注释为 @Inherited。通过这种方式,您可以在一个地方完成所有工作

    顺便说一句:通常更容易从通用超类继承,而是在任何地方使用扩展。

    【讨论】:

      猜你喜欢
      • 2017-09-03
      • 2021-07-22
      • 2015-05-30
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      相关资源
      最近更新 更多