我无法找到任何资源来解释JUnit Jupiter扩展模型中BeforeEachCallback
和BeforeTestExecutionCallback
之间究竟有什么区别。 (我当然也对" After" -variants)感兴趣
据我了解,以下时间表描述了正在发生的事情:
BeforeEach
- BeforeTestExecution
- Actual execution of the test
- AfterTestExecution
- AfterEach
我认为BeforeTestExecution
存在,所以你可以在所有BeforeEach
回调被处理之后但在实际测试执行之前执行代码。但是我仍然不清楚这一点,因为每个人都可以使用BeforeTestExecution
代替BeforeEach
,并且这些回调的执行顺序也是随机的。
那么BeforeTestExecution
究竟是什么,以及如果您同时在多个扩展中使用此回调会发生什么?
答案 0 :(得分:3)
Javadocs(here和here)没有明确区分它们,但JUnit5 docs包含以下内容:
BeforeTestExecutionCallback
和AfterTestExecutionCallback
定义了希望添加行为的扩展API,这些行为将分别在执行测试方法之前和之后立即执行。因此,这些回调非常适合于计时,跟踪和类似的用例。如果您需要实现围绕@BeforeEach
和@AfterEach
方法调用的回调,请改为实现BeforeEachCallback
和AfterEachCallback
。
因此,如果您想在没有任何设置的情况下将仅包装在测试执行中,请使用BeforeTestExecutionCallback
。文档继续建议计时和记录测试执行作为BeforeTestExecutionCallback
的可能用例。