gpt4 book ai didi

java - 从@RunWith 到@ExtendWith 的转换

转载 作者:行者123 更新时间:2023-12-04 11:02:16 34 4
gpt4 key购买 nike

我需要 methodInvokerJUnit4JUnit5将测试本身的执行包装在 lambda 中表达。像 AfterTestExecutionCallback 这样的给定接口(interface)将不允许操纵执行本身。请用JUnit指导我4到5迁移?从 @RunWith 的过渡至@ExtendWith .如何使用 JUnit 5 包装测试本身的执行?

谢谢

enter image description here

最佳答案

您可以通过实现和注册 InvocationInterceptor 来做到这一点。

public class SwingEdtInterceptor implements InvocationInterceptor {

@Override
public void interceptTestMethod(Invocation<Void> invocation,
ReflectiveInvocationContext<Method> invocationContext,
ExtensionContext extensionContext) throws Throwable {

AtomicReference<Throwable> throwable = new AtomicReference<>();

SwingUtilities.invokeAndWait(() -> {
try {
invocation.proceed();
}
catch (Throwable t) {
throwable.set(t);
}
});
Throwable t = throwable.get();
if (t != null) {
throw t;
}
}
}

复制自 https://junit.org/junit5/docs/current/user-guide/#extensions-intercepting-invocations

似乎您的用例可能是动态测试的候选者,又名 TeSTLes: https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests ——你试过了吗?

关于java - 从@RunWith 到@ExtendWith 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58728649/

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