首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在@SpringBootApplication测试中使用@Configuration排除类

如何在@SpringBootApplication测试中使用@Configuration排除类
EN

Stack Overflow用户
提问于 2019-09-07 05:45:05
回答 2查看 1.2K关注 0票数 2

我使用了一个叫做spring-cloud-aws的依赖模块。在我的SpringBoot JUnit测试用例中,它有一个@Configuration类作为org.springframework.cloud.aws.messaging.config.annotation.SqsConfiguration,检测到SqsConfiguration类并初始化Beans。我想在我的JUNit测试用例的类中排除这个配置。如何做到这一点?

我试着使用@ComponentScan,它不起作用。

代码语言:javascript
复制
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SQLTestConfig.class)
@ActiveProfiles("test")
public class BusinessManagerTest {

}

@TestConfiguration
@ComponentScan(basePackages = {"package1","package1"},
excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = SqsConfiguration.class)})
@Profile("test")
class SQLTestConfig {   

    @Bean
    public SomeBean beans() {

        return new SomeBean();
    }



}

加载此配置类需要aws凭据可用。我不想为运行简单的Bean测试用例注入凭据。

org.springframework.beans.factory.BeanCreationException:创建类路径资源org/springframework/cloud/aws/messaging/config/annotation/SqsConfiguration.class:中定义的名为'simpleMessageListenerContainer‘的bean时出错;init方法调用失败;嵌套异常为com.amazonaws.services.sqs.model.AmazonSQSException:请求中包含的安全令牌已过期

EN

回答 2

Stack Overflow用户

发布于 2019-09-08 03:58:52

有多种方法可以在测试过程中排除特定的自动配置:

通过application-test.properties中的属性排除

代码语言:javascript
复制
spring.autoconfigure.exclude=org.springframework.cloud.aws.messaging.config.annotation.SqsConfiguration

通过@TestPropertySource排除

代码语言:javascript
复制
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
@SpringBootTest(classes = SQLTestConfig.class)
@TestPropertySource(properties ="spring.autoconfigure.exclude=org.springframework.cloud.aws.messaging.config.annotation.SqsConfiguration")

通过@EnableAutoConfiguration排除

  • ,例如:

代码语言:javascript
复制
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
@SpringBootTest(classes = SQLTestConfig.class)
@EnableAutoConfiguration(exclude=SqsConfiguration.class)

选择一个更适合你的;)

票数 0
EN

Stack Overflow用户

发布于 2021-03-09 22:01:22

因此,要禁用Test的所有Beans的自动加载,测试类可以显式地提到所需的依赖项。这可以使用ContextConfiguration注释来完成。例如,

代码语言:javascript
复制
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {EmployeeService.class})
public class EmployeeLeavesTest { 

   @Autowired
   private EmployeeService employeeService;

}

在这个例子中,只有EmployeeService类是可用的,其他bean将不会被加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57828851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档