我有Java SpringBoot应用程序,并且我想运行集成测试,因此我想在进行任何测试之前启动该应用程序。我有一些可以正常运行应用程序的Bean,这些Bean会覆盖一些默认Bean,并且可以正常工作。
正常运行服务时的日志:
Android Studio's preview
但是当我尝试运行集成测试时,日志显示如下:
Overriding bean definition for bean 'myService' with a different definition: replacing [Generic bean: ...] with [Root bean: myBean]
以下是启动应用的测试:
Skipping bean definition for [where is my bean]: a definition for bean 'myService' already exists. This top-level bean definition is considered as an override.
有人知道如何在我的测试中设置覆盖默认bean吗?
谢谢
答案 0 :(得分:0)
您也可以为测试设置替代Bean,可以通过创建单独的配置类并在此定义所有Bean来实现。
@Configuration
public class TestConfig {
@Bean
public <Bean Class Name> <name of bean>()
{
return new <Bean Class Name>();
}
}
然后在测试用例上,可以将该配置类用作上下文配置。
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfig.class})
通过这种方式,所有的bean都可以被初始化并用于单独类中的测试用例。