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