如何在 jUnit 5 中检查之前的测试执行情况?

问题描述 投票:0回答:1

我需要在使用 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 方法)。我的方法正确吗?或者我可以用什么来做到这一点?

java spring spring-boot testing junit
1个回答
1
投票

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
注释的显式声明,

© www.soinside.com 2019 - 2024. All rights reserved.