在所有测试类中的所有测试结束后运行junit 5中的代码



对于测试证据,我希望将我编写的所有测试工件(例如服务器调用和响应)归档到特定目录中。我找到了压缩目录的方法,但是我找不到合适的地方执行它。

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

阅读帖子后,如何编码一次之前和一次之后,所有junit5测试已经在一个模块中执行?从junit内部执行这个调用似乎没有什么希望。

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

由于代码最终将在maven构建中运行,其中存档真的很重要,我想也许有可能在目标测试后运行它。但是我明白,如果测试目标中至少有一定数量的错误,maven就会停止,然后下面的代码将不会被执行。但是在错误的情况下,证据将是最有用的。

有人尝试过类似的东西吗?

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

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

  • 你可以在父类上定义beforeAll/afterAll,所有的测试都从它继承。另一个选择是尝试在接口上定义beforeAll/afterAll(我不是100%肯定这是否有效;我认为应该是这样)。在beforeAll中,你可以初始化你的设置,在afterEachCallBack中,你可以收集你需要一个测试的所有数据。这在每次测试后被调用

  • 你可以实现一个扩展,它使用JUnit的回调,这是BeforeAllCallback和AfterAllCallBack可以处理。根据你的实际需要,你可能还需要实现beforeEachCallBack/afterEachCallBack。

  • 另一个选择是使用Test Execution侦听器在那里你可以使用testPlanExecutionStartedtestPlanExecutionFinished,你应该实现记录和获得所有你需要的。

我做了一个示例项目,展示了JUnit Jupiter侦听器的用法。

最新更新