如何从TestExecutionListener访问测试方法注释

时间:2019-07-17 14:40:59

标签: junit5 junit5-extension-model

我正在尝试将Test Management For Jira JUnit Integration移植到JUnit5。此模块生成测试运行的JSON报告,并通过使用测试方法example上的注释将结果与Jira票证相关联。

我不确定从TestExecutionListener检索TestCase批注的最佳方法是什么。

我使用TestIdentifier.getSource查看了Reflection,并进行了一些操作来重建方法签名并从中提取注释,但是这种方法很笨拙。

我碰到了这篇帖子Allow extensions to register TestExecutionListeners,其中提出了以下建议:

  

建议:让您的扩展程序发布WebDriver bean的会话ID,例如

String sessionId = ...;
extensionContext.publishReportEntry("webDriverSessionId", sessionId)
  

在您的TestExecutionListener中,实现reportEntryPublished并将其存储在以TestIdentifier为键的Map中。在executionFinished中,报告测试结果以及此地图中的值。

这种方法看起来很有希望,但是我想确保没有另一种方法既不需要扩展又不需要测试执行侦听器。有没有办法直接在TestExecutionListener中检索测试方法注释信息?

2 个答案:

答案 0 :(得分:0)

@Alex,以下内容可能会在侦听器中使用... ((MethodSource) testIdentifier.source).javaMethod.getAnnotation(TestCase.class)

答案 1 :(得分:0)

似乎您无法从 salaries 获得测试注释,但您可以实现 select sum(salary) from salaries s group by id order by sum(salary) desc limit 3 ; 或例如 TestExecutionListener 并获得这样的自定义注释值:

TestWatcher