gpt4 book ai didi

java - Spring Boot 测试 - 没有 'com.example.MyService' 类型的合格 bean 可用

转载 作者:行者123 更新时间:2023-11-30 06:09:24 25 4
gpt4 key购买 nike

stackoverflow 上有很多类似的问题,但我发现没有一个适合我的情况。

在我与 Spring boot 2.0.2.RELEASE 的集成测试中,我为测试创建了一个单独的 @Configuration 类,我在其中定义了 bean com.example.MyService。该 bean 恰好被 com.example.OtherBean 中的其他 bean 使用。

这是代码:

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {MyIntegrationTestConfig.class},
webEnvironment = SpringBootTest.WebEnvironment.MOCK)
public class MyService1Test extends MyAbstractServiceIntegrationTest {
@Test
public void someTest() {}
}

安装和拆卸的通用摘要:

public class MyAbstractServiceIntegrationTest{
@Before
public void setUp(){}

@After
public void tearDown()
}

src/test 中的 MyIntegrationTestConfig,用于代替 src/main 中的配置:

@Configuration
@ComponentScan({"com.example"})
public class MyIntegrationTestConfig {
@Bean
public MyService myService() {
return null;
}
}

MyService bean 出于测试目的可以为 null。

当我运行测试时,我不断收到以下错误:

No qualifying bean of type 'com.example.MyService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

我什至尝试将这个内部类添加到 MyServic1Test 中。仍然没有帮助:

@TestConfiguration
static class MyServic1TestContextConfiguration {

@Bean(name = "MyService")
public MyService myService() {
return null;
}
}

知道我在这里做错了什么吗?或者我错过了什么?

我怀疑 Spring 在创建 src/test 文件夹中定义的 MyService bean 之前首先尝试在 src/main 文件夹中创建/ Autowiring bean。难道是这样吗?或者是否存在 MyService Bean 所在的不同上下文(例如测试上下文),而其他 Bean 位于其他上下文中并且无法找到 MyService。

附带问题:对于集成测试,可以使用 webEnvironment = SpringBootTest.WebEnvironment.MOCK,对吗?

最佳答案

问题在于如何初始化 bean。 null 值是导致问题的原因。就好像您实际上没有声明该对象的任何实例。为了使其工作,请声明服务的有效实例new MyService()

关于java - Spring Boot 测试 - 没有 'com.example.MyService' 类型的合格 bean 可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50592985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com