【问题标题】:Run code in junit 5 after all tests in all test classes terminated在所有测试类中的所有测试终止后在junit 5中运行代码
【发布时间】:2021-02-08 21:54:13
【问题描述】:

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

测试生命周期回调似乎不是正确的位置,因为在每个测试类之后都会调用 @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 就会停止,然后下面的代码将不会被执行。但在错误情况下,证据最有用。

有人试过类似的吗?

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

【问题讨论】:

  • 想知道您为什么喜欢归档所有工件会很有趣?你使用像 Jenkins 这样的 ci 解决方案吗?您在测试期间会产生什么样的工件?
  • 保存工件的主要原因是我使用 junit 执行的端到端测试的测试证据。越来越多的审计人员要求证明程序已经过测试以及如何测试。但也适用于商业以及作为开发和质量保证的文档。我尝试为每个测试编写一个人类可读的测试报告,该报告“自我记录”测试。此外,我将请求和响应写在单独的文件中,这些文件链接在测试报告中。这提供了一个高级描述,您可以在其中深入了解每个操作并重播。这提高了透明度,提供了实际的文档和简单的分析......

标签: java maven junit5


【解决方案1】:

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

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

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

  • 另一种选择是使用Test Execution listener 你可以使用testPlanExecutionStartedtestPlanExecutionFinished 来记录和获取你需要的一切。

我创建了一个example project,它显示了 JUnit Jupiter 侦听器的用法。

【讨论】:

  • Hei Karl,非常感谢您提供的超酷示例项目!我很容易感到羞耻,但这就是要走的路。我一直在思考和阅读 AfterAllCallBack,但出于一些在我看来过于孤立的原因。最重要的是,必须有开关来打开和关闭报告:每日构建默认不需要它,只要它是绿色的,但当它变成红色时可能会有用。并且在发布之前是最想要的。
  • 通常你可以用你的 ci 记录/存档这些东西,并且只保留几天的记录(取决于大小)......
  • 如果你构建的是红色的,应该已经生成了相应的报告。所以从我的角度来看,关闭/打开没有意义。
  • 我知道那些报道,我不得不忍受它们多年。对我来说,它们看起来更像是一个包含数千行信息的垃圾场。如果我设法创建一个更具可读性的报告,如果你愿意,我会要求你挑战它。但不受个人品味的影响,我要感谢您的意见,您的意见非常棒,精益且非常匹配..
猜你喜欢
  • 2017-09-03
  • 1970-01-01
  • 2020-10-24
  • 2015-01-01
  • 1970-01-01
  • 2014-03-13
  • 2021-07-22
  • 2021-10-24
相关资源
最近更新 更多