Java 在spring启动测试中注入资源依赖项失败

Java 在spring启动测试中注入资源依赖项失败,java,spring,spring-boot,Java,Spring,Spring Boot,以下是我在下面定义的相关签名。我正在运行一个集成测试,结果失败了: 错误: 我假设在我以config类为目标时正在加载上下文。我会错过什么?我有一个服务批注,其名称位于无法加载的服务上。。我也用限定符尝试过自动连线 @ExtendWith({SpringExtension.class}) @SpringBootTest(classes = ConsumerService.class) @ContextConfiguration(classes = {MyCoolConfig.class}) pu

以下是我在下面定义的相关签名。我正在运行一个集成测试,结果失败了:

错误: 我假设在我以config类为目标时正在加载上下文。我会错过什么?我有一个服务批注,其名称位于无法加载的服务上。。我也用限定符尝试过自动连线

@ExtendWith({SpringExtension.class})
@SpringBootTest(classes = ConsumerService.class)
@ContextConfiguration(classes = {MyCoolConfig.class})
public class EventDecomposerIntegrationTest
@配置
公共类mycolconfig{
@值(${spring.kafka.bootstrap servers}”)
私有字符串引导服务器;
@值(${spring.kafka.schema注册表}”)
私有字符串模式注册表;
@豆子
公共地图使用者配置(){
Map props=newhashmap();
返回道具;
}
@豆子
公共消费者工厂消费者工厂(){
返回新的DefaultKafkanConsumerFactory(consumerConfigs());
}
@豆子
公共卡夫卡利斯特集装箱工厂
kafkaListenerContainerFactory(){
ConcurrentKafkalistener集装箱工厂=
新的ConcurrentKafkaListenerContainerFactory();
setConsumerFactory(consumerFactory());
factory.getContainerProperties().setAckMode(ContainerProperties.AckMode.MANUAL\u立即);
factory.getContainerProperties().setMissingTopicsFatal(false);
返回工厂;
}
}

需要告诉Spring在哪里可以找到您的
@Service
bean,以便将它们连接起来。您已经告诉Spring如何通过

@SpringBootTest(classes = ConsumerService.class)
您告诉Spring如何通过

@ContextConfiguration(classes = {MyCoolConfig.class})
但Spring无法找到
CoolTransformer

实现这一点的一种方法是使用
@ComponentScan
注释。该注释通常会在
@配置
bean上进行,因此您可以将其放在
myolconfig
上,并使用要扫描的包,如:

@Configuration
@ComponentScan("com.foo")
public class MyCoolConfig {
只要
CoolTransformer
com.foo
包的某个地方,Spring就会找到它并将其连接起来

如果
ConsumerService
也在
com.foo
下,它也将被扫描,因此您也不需要指定它

最后,由于
mycolconfig
现在是所有其他bean的入口点,您可以将集成测试的注释简化为:

@ExtendWith({SpringExtension.class})
@SpringBootTest(classes = MyCoolConfig.class)
public class EventDecomposerIntegrationTest

没有看到
mycolconfig
就不清楚您是否有任何东西可以创建
CoolTransformer
bean。
mycolconfig
是否配置组件扫描?让我发布mycolconfig。我觉得我的设置不正确。@AlexWittig用configok更新了op,是的,我认为我没有看到任何东西可以拾取
CoolTransformer
bean。它是否与
@springbootest(classes={ConsumerService.class,CoolTransformer.class})一起工作
?否则另一个选项是引入
@ComponentScan
注释来搜索bean并将其连接起来。
@SpringBootTest(classes = ConsumerService.class)
@ContextConfiguration(classes = {MyCoolConfig.class})
@Configuration
@ComponentScan("com.foo")
public class MyCoolConfig {
@ExtendWith({SpringExtension.class})
@SpringBootTest(classes = MyCoolConfig.class)
public class EventDecomposerIntegrationTest