gpt4 book ai didi

java - 所有测试类中的所有测试终止后,在 junit 5 中运行代码

转载 作者:行者123 更新时间:2023-12-02 16:18:30 25 4
gpt4 key购买 nike

为了测试证据,我想将我写入特定目录的所有测试 Artifact (例如服务器调用和响应)存档。我得到了压缩目录的方法,但是我没有找到合适的地方来执行它。

测试生命周期回调似乎不是正确的地方,因为在每个测试类之后调用@AfterAll,但应该在所有测试类中的所有测试终止后生成存档。

阅读类似 How to code once before and once after all junit5 tests have executed in a module? 的帖子后从 junit 内部执行调用似乎希望不大。

我找到了一个扩展 TestLauncher,但在阅读了稀缺的文档之后,它似乎被用来从外部启动测试。特别是 SummaryGeneratingListener 在阅读后听起来对扩展很有用 https://www.codota.com/web/assistant/code/rs/5c7c89fd2f7dae0001637b13#L33但是如果我把这段代码放在树中,在 mavens src/test 下,我看不到如何只调用这个启动器而不是所有的单个测试......

由于代码最终将在归档非常重要的 Maven 构建中运行,我认为也许有可能在目标测试后运行它。但我知道如果测试目标中至少存在一定数量的错误,maven 就会停止,然后将不会执行以下代码。但这是证据最有用的错误情况。

有人试过类似的东西吗?

感谢分享想法、想法和经验

最佳答案

一般来说,这个问题有几种解决方案。

  • 您可以在所有测试继承自的父类上定义 beforeAll/afterAll。另一种选择是尝试在接口(interface)上定义 beforeAll/afterAll(我不是 100% 确定这是否有效;我会说它应该)。在 beforeAll 中,您可以初始化设置,在 afterEachCallBack 中,您可以收集单个测试所需的所有数据。所以每次测试后都会调用它。

  • 您可以实现一个使用 callbacks of JUnit 的扩展这是BeforeAllCallbackAfterAllCallBack可以处理那个。根据您的确切需要,您可能还需要实现 beforeEachCallBack/afterEachCallBack。

  • 另一种选择是使用 Test Execution listener您可以在其中使用 testPlanExecutionStartedtestPlanExecutionFinished,您应该实现它们来记录并获取所需的一切。

我做了一个 example project它显示了 JUnit Jupiter 监听器的用法。

关于java - 所有测试类中的所有测试终止后,在 junit 5 中运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66109929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com