如何将bean加载到测试上下文中?

时间:2019-12-13 10:41:33

标签: java spring spring-boot

我有需要测试的REST服务。该服务具有Spring Security身份验证,我需要在测试或模拟中将其关闭。我决定嘲笑它,因为我无法将其关闭。我为此写了@TestConfiguration,但是现在我的上下文无法加载:

@TestConfiguration
public class TestConfig {
}

@WebMvcTest(controller = MyController.class)
@ContextConfiguration(classes = TestConfig.class)
public MyControllerTest {
    @Test
    public void simpleTest() {
    }
}

在我的主要消息来源中,我有一些配置类可以加载其他bean,并且该类在我的测试中没有加载,并且我有一个例外:

java.lang.IllegalStateException: Failed to load ApplicationContext

我做错了什么?谁能帮我?我使用SpringBoot 2.2.0,在该版本@WebMvcTest(secure = false)中,由于secure属性不再存在而无法正常工作。

1 个答案:

答案 0 :(得分:0)

您可以尝试在测试类中覆盖安全配置:

@WebMvcTest(controller = MyController.class)
public MyControllerTest {

    @Configuration
    public class MyTestsSecurityConfig extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            //...
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            //...
        }
    }

    @Test
    public void simpleTest() {
    }
}

也可以在这里查看:https://howtodoinjava.com/spring-boot2/testing/springboot-test-configuration/