Spring boot 如何从spring启动测试中禁用kafka连接?

Spring boot 如何从spring启动测试中禁用kafka连接?,spring-boot,spring-test,spring-kafka,Spring Boot,Spring Test,Spring Kafka,我正在使用spring kafka来使用来自kafka主题的消息,因此我有一个kafka使用者配置类: @Configuration class KafkaConfiguration { // kafka consumer configurations } 我有一些JUnit测试,这些测试将使用mockMvc加载spring上下文来测试我的API,我不想测试与kafka消息传递相关的功能,如何阻止kafka仅为JUnit测试使用消息?它一直失败,因为我的本地和CI环境中没有kafka服务器

我正在使用spring kafka来使用来自kafka主题的消息,因此我有一个kafka使用者配置类:

@Configuration
class KafkaConfiguration {
 // kafka consumer configurations
}
我有一些JUnit测试,这些测试将使用mockMvc加载spring上下文来测试我的API,我不想测试与kafka消息传递相关的功能,如何阻止kafka仅为JUnit测试使用消息?它一直失败,因为我的本地和CI环境中没有kafka服务器

Spring概要文件不是一个很好的选项,因为我必须编写如下代码:

@Configuration
@Profile("!unit-test")
class KafkaConfiguration {
  //kafka configuration
}

最后,我将使用仅为测试目的而编写的生产代码,而不是非常干净的代码。是否有其他方法可以禁用kafka进行测试?

Spring概要文件正是出于此目的。它总是为应用程序运行的各种场景(登台、生产、单元测试)启用/禁用应用程序的某些部分


唯一的另一种选择是在测试期间使用卡夫卡,例如。

弹簧配置文件正是为了实现这一目的。它总是为应用程序运行的各种场景(登台、生产、单元测试)启用/禁用应用程序的某些部分


唯一的其他选择是在测试期间使用Kafka,例如。

在配置类上添加
@ConditionalOnProperty
注释

例如:

@ConditionalOnProperty(value = "kafka.enable", havingValue = "true", matchIfMissing = true)

,并在配置类上添加
application.properties
文件属性
kafka.enable=false
添加
@ConditionalOnProperty
注释

例如:

@ConditionalOnProperty(value = "kafka.enable", havingValue = "true", matchIfMissing = true)

,并添加
application.properties
file property
kafka.enable=false

由于您已经在专用配置类中隔离了kafka配置,您可能只需要配置测试以使用某些特定的配置类。通过在测试中使用注释
ContextConfiguration
,或在测试配置类中使用注释
Import
,您可以选择需要加载的配置。因为您已经在专用配置类中隔离了Kafka配置,您可能只需要配置测试以使用某些特定的配置类。通过在测试中使用注释
ContextConfiguration
,或在测试配置类中使用注释
Import
,可以选择需要加载的配置。