我需要在使用 jUnit 5 在 Spring Boot 应用程序中执行许多测试之前进行验证。基本上我需要检查我的测试是否有超类(因为我们在那里预加载上下文)。我不想编辑每个测试,否则可以做一些允许我在运行每个测试之前进行检查的事情。我做了这样的事情:
public class InheritClassTestCheckExtension implements TestTemplateInvocationContextProvider, BeforeEachCallback {
@Override
public void beforeEach(ExtensionContext context) throws Exception {
Class<?> superClass = context.getRequiredTestClass().getSuperclass();
String listClasses = "";
if (superClass doesnt exists or is object, throw a exception) {
throw new Exception("Need to inherit from class A,B or C");
} else {
Continue to the test's
}
}
我的 junit-platform.properties 中有这个
junit.jupiter.extensions.autodetection.enabled=true
junit.jupiter.extensions.autodetection.names=com.my.package.InheritClassTestCheckExtension
但这不起作用(甚至没有进入 beforeEach 方法)。我的方法正确吗?或者我可以用什么来做到这一点?
junit.jupiter.extensions.autodetection.enabled
标志适用于通过 ServiceLoader 机制注册的扩展
https://junit.org/junit5/docs/current/user-guide/#extensions-registration-automatic-enabling
所以,预计有
InheritClassTestCheckExtension
全类名
在 META-INF/services/org.junit.jupiter.api.extension.Extension
文件
@ExtendWith
或 @RegisterExtension
注释的显式声明,