我有一个集成测试类,它带有@SpringBootTest
注释,它可以启动完整的应用程序上下文并允许我执行测试。但是,我无法@Autowired
bean进入测试类本身。相反,我得到一个错误:
没有可用的'my.package.MyHelper'类型的合格bean。”
如果我不是@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
}
}
如何在使用@SpringBootTest
的同时在测试类内部使用Spring自动装配?
按照下面的@ 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();
}
}
}
但是它们似乎没有任何作用。我仍然遇到相同的错误。如上所述,将相同的配置块放置在单独的文件中时会起作用。
答案 0 :(得分:1)
为测试类添加ContextConfiguration:
org.apache.poi 4.0.1 version