JUnit 5:BeforeEachCallback和BeforeTestExecutionCallback

时间:2018-06-06 15:58:19

标签: java junit junit5 junit5-extension-model

我无法找到任何资源来解释JUnit Jupiter扩展模型中BeforeEachCallbackBeforeTestExecutionCallback之间究竟有什么区别。 (我当然也对" After" -variants)感兴趣

据我了解,以下时间表描述了正在发生的事情:

BeforeEach - BeforeTestExecution - Actual execution of the test - AfterTestExecution - AfterEach

我认为BeforeTestExecution存在,所以你可以在所有BeforeEach回调被处理之后但在实际测试执行之前执行代码。但是我仍然不清楚这一点,因为每个人都可以使用BeforeTestExecution代替BeforeEach,并且这些回调的执行顺序也是随机的。

那么BeforeTestExecution究竟是什么,以及如果您同时在多个扩展中使用此回调会发生什么?

1 个答案:

答案 0 :(得分:3)

Javadocs(herehere)没有明确区分它们,但JUnit5 docs包含以下内容:

  

BeforeTestExecutionCallbackAfterTestExecutionCallback定义了希望添加行为的扩展API,这些行为将分别在执行测试方法之前和之后立即执行。因此,这些回调非常适合于计时,跟踪和类似的用例。如果您需要实现围绕@BeforeEach@AfterEach方法调用的回调,请改为实现BeforeEachCallbackAfterEachCallback

因此,如果您想在没有任何设置的情况下将包装在测试执行中,请使用BeforeTestExecutionCallback。文档继续建议计时和记录测试执行作为BeforeTestExecutionCallback的可能用例。