如何在使用@SpringBootTest时在测试类中自动连接bean



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

没有类型为'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
}
}

如何在测试类中使用Spring自动布线,同时也使用@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();
}
}
}

但它们似乎没有任何效果。我仍然会犯同样的错误。当将相同的配置块放置在如上所述的单独文件中时,该配置块可以工作。

为测试类添加上下文配置:

@ContextConfiguration(classes = { CacheControlTestConfiguration.class })

最新更新