当前位置: 首页 > 知识库问答 >
问题:

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

康泽宇
2023-03-14

我有需要测试的REST服务。该服务具有Spring Security身份验证,我需要在测试或模拟中关闭它。我决定嘲笑它,因为我不能关掉它。我为此编写了@testconfiguration,但现在未加载上下文:

@TestConfiguration
public class TestConfig {
}

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

在我的主要源代码中,我有一些config类加载了一些其他bean,而it类在我的测试中没有加载,我有一个例外:

java.lang.IllegalStateException: Failed to load ApplicationContext

我做错了什么?有人能帮我吗?我使用了SpringBoot 2.2.0,但在该版本中,@webmvctest(secure=false)无法工作,因为secure属性不再存在。

共有1个答案

慕铭
2023-03-14

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

@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/

 类似资料:
  • 我在spring boot应用程序中实现了firebase消息传递。为此,我创建了一个类似本文所述的bean,以便轻松访问实例。然后,该bean被注入到服务中。然后,当调用利用bean的服务方法时,所述服务被注入到我的控制器中。 现在我的问题是该项目的测试套件(使用JUnit5 根本原因: 注意:这些错误只有在整体运行testsuite时才会出现。如果我自己运行一个测试类,则不会出现错误。 解决这

  • 我对Spring Security有这个问题。 我有一个带有SecurityConfig类的java配置实现,它扩展了WebSecurityConfigureAdapter。 在这个类中,我想重写方法“configure()” 一切正常,一切正常。 问题是Spring Context上没有加载“MyDaoAuthenticationProvider”组件。所以我无法注入或自动安装此类中的任何组件:

  • 问题内容: 我有一些带有自定义注释的类,不应实例化(抽象类,它只是真实bean的子组件)。但是在此类的顶部,在运行时,在上下文初始化阶段,我想将额外的bean放入应用程序上下文中。 因此,基本上,我需要扫描类路径,处理结果,并将新bean引入当前的应用程序上下文中。 似乎spring-mvc,spring-tasks和spring-integration正在这样做(我试图从源中学习它-没运气) 我

  • 我正在开发一个spring boot(V2.2.4)应用程序,专门添加集成测试,该测试利用Testcontainers实例化一个docker容器,该容器运行一个Postgres实例进行测试,以对其执行数据库事务。这些测试通过Liquibase将我们的数据库模式推送到Postgres实例中。我是按照这个指南实现的。到测试时Postgres的连接由一个名为TestPostgresConfig的类管理。

  • 我想不通..出于某种原因,Spring Junit没有将我的bean添加到上下文中。请砰!! 由:org.springframework.beans.factory.nosuchBeanDefinitionException引起:没有类型为“com.api.demo.store.FileStorage”的合格bean可用:需要至少有1个bean作为autowire候选bean。依赖项注释:{@or

  • 嗨,我有一个Spring Boot(2.1.6发行版)应用程序,我正在尝试添加一些简单的集成测试到我的应用程序。首先,我创建了一个基础IntegrationTest类,如下所示: 这是我的测试方法: 有什么建议吗?