如何解决如何在junit 5中实现类似“围绕每个”回调的功能?
我有一些现有的 JUnit 4 运行器代码,它会多次运行测试直到通过。
基本上可以归结为:
for (int i = 1; i <= maxRetry; i++) {
boolean Failed = false;
try {
methodBlock(method).evaluate();
} catch (Throwable e) {
Failed = true;
if (i == maxRetry) {
eachNotifier.addFailure(e);
}
} finally {
if (!Failed || i == maxRetry) {
eachNotifier.fireTestFinished();
}
}
if (!Failed) {
break;
}
if (i < DEFAULT_RETRY) {
logger.warn("retrying " + i + " of " + maxRetry);
}
}
注意: methodBlock(method)
返回的是一个 Statement
,它运行包括所有 @Before
和 @After
方法的测试。
查看 JUnit 5 中可用的扩展点,我确实找到了 InvocationInterceptor#interceptTestMethod
,但如果我使用它,它看起来只会重新运行测试方法本身,而不是之前和之后。
是否有任何与我们在 JUnit 4 中所做的类似的事情?
理想情况我只喜欢 RSpec 的 around(:each)
之类的东西,给定一个测试逻辑块,我可以将它包装在我想要的任何逻辑中。
有人在 this question 中有类似的目标,其中接受的答案是替换@Test
注释为新注释以指示测试(例如 {{1} }),并且确实有效,但是如果您同时使用 @FlakyTest
和 @FlakyTest
进行测试,则无法运行。 (我想要一些我可以继续与一起使用的东西@ParameterizedTest
。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。