在不创建上下文的情况下使用 Spring 和 Junit5 禁用测试

Disable Test with Spring and Junit5 without context creation

我们最近将测试框架迁移到了 JUnit5,并且在使用 @SpringJUnitConfig 的测试中使用 @Disabled(和 ExecutionConditions)时遇到了一些问题: 在 Junit4 中,@Ignore 毫无疑问地禁用了测试执行,并且没有执行任何操作。使用 Junit5 和 @Disabled,系统现在在 意识到不应执行测试之前创建 spring 上下文 。在我们的例子中,这会导致禁用测试失败,因为其中一些测试因为在某些情况下无法创建上下文而被禁用。

是否可以在 JUnit5 中以不为该测试创建 spring 上下文的方式禁用测试 (class)?

最小示例:

@TestInstance(Lifecycle.PER_CLASS)
@RunWith(JUnitPlatform.class) // To support tests running in eclipse 
@SpringJUnitConfig(classes = {BaseTestSpringTest.TestConfiguration.class})
@Disabled
public class BaseTestSpringTest {

    @Configuration
    @ComponentScan(basePackages = { "my.package" })
    public class TestConfiguration {
    }

    @Component
    public class TestClass {
        @PostConstruct
        public void fail() {
            throw new IllegalStateException();
        }
    }

    @Autowired
    protected TestClass test;

    @Test
    public void test() throws Exception {

    }
}

这是 JUnit Jupiter 中的一个错误,仅在使用 PER_CLASS 测试实例生命周期模式时才会出现。

我已在 JUnit 5 问题跟踪器中提出以下问题来解决此问题。 https://github.com/junit-team/junit5/issues/1103