java - JUnit 5:BeforeEachCallback 和 BeforeTestExecutionCallback 之间的区别
问题描述
我找不到任何资源来解释JUnit Jupiter 扩展模型BeforeEachCallback
和BeforeTestExecutionCallback
JUnit Jupiter 扩展模型之间的确切区别。(我当然也对“After”变体感兴趣)
据我了解,以下时间表描述了正在发生的事情:
BeforeEach
- BeforeTestExecution
- Actual execution of the test
- AfterTestExecution
-AfterEach
我想这是BeforeTestExecution
存在的,因此您可以在处理完所有BeforeEach
回调之后但在实际测试执行之前执行代码。然而这对我来说仍然不清楚,因为每个人都可以使用BeforeTestExecution
代替,BeforeEach
并且这些回调的执行顺序又是随机的。
那么,BeforeTestExecution
如果您同时在多个扩展中使用此回调,究竟是为了什么以及会发生什么?
解决方案
Javadocs(此处和此处)没有明确区分它们,但JUnit5 文档包括以下内容:
BeforeTestExecutionCallback
并AfterTestExecutionCallback
为希望添加行为的扩展定义 API,这些行为将分别在执行测试方法之前和之后立即执行。因此,这些回调非常适合计时、跟踪和类似用例。如果您需要实现围绕@BeforeEach
和@AfterEach
方法调用的回调,请实现BeforeEachCallback
andAfterEachCallback
代替。
因此,如果您只想在没有任何设置的情况下包装测试执行,请使用BeforeTestExecutionCallback
. 文档继续建议计时和记录测试执行作为BeforeTestExecutionCallback
.
推荐阅读
- django - 是否可以通过 Django 在生产中使用静态(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)提供媒体文件
- php - 反馈意见电子邮件通知给学生
- node.js - 如何使 async/await 在节点 js 中正常工作?
- date - Omnifaces of:secondsBetween EL 函数无法通过 of:formatDate 转换为 HH:mm:ss
- php - 如何在 php Laravel 中爬升变量?
- find - Episerver FIND 结果不在 CMS 中
- javascript - 如何在谷歌地图折线的中心设置折线标记?
- python - 在 ODOO 中覆盖 Create / Write 方法中的返回操作
- javascript - 根据来自另一个的事件过滤一个 ag-grid
- database - Neo4j:如何匹配关系?