gpt4 book ai didi

java - 使用@SpringBootTest时如何在测试类中 Autowiring bean

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:55 24 4
gpt4 key购买 nike

我有一个用 @SpringBootTest 注释的集成测试类,它启动完整的应用程序上下文并让我执行我的测试。但是我无法将 @Autowired bean 放入测试类本身。相反,我得到一个错误:

No qualifying bean of type 'my.package.MyHelper' available".

如果我不@Autowire 我的助手类,而是将代码直接保留在 setUp 函数中,测试将按预期进行。

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Application.class)
public class CacheControlTest {

@Autowired
private MyHelper myHelper;

@Before
public void setUp() {
myHelper.doSomeStuff();
}

@Test
public void test1() {
// My test
}
}

如何在测试类中使用 Spring Autowiring ,同时还使用 @SpringBootTest

按照@user7294900 下面的建议,创建一个单独的 @Configuration 文件并将其添加到 CacheControlTest 的顶部:

@ContextConfiguration(classes = { CacheControlTestConfiguration.class })

但是,有什么方法可以将配置保留在 CacheControlTest 类本身中?我尝试在我的测试类中添加:

public class CacheControlTest {

@TestConfiguration
static class CacheControlTestConfiguration {
@Bean
public MyHelper myHelper() {
return new MyHelper();
}
}

}

public class CacheControlTest {

@Configuration
static class CacheControlTestConfiguration {
@Bean
public MyHelper myHelper() {
return new MyHelper();
}
}
}

但是他们似乎没有任何作用。我仍然遇到同样的错误。如上所述,当放置在单独的文件中时,相同的配置 block 会起作用。

最佳答案

为您的测试类添加 ContextConfiguration:

@ContextConfiguration(classes = { CacheControlTestConfiguration.class })

关于java - 使用@SpringBootTest时如何在测试类中 Autowiring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53812272/

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