尝试在测试中启动Java应用程序

时间:2018-11-09 16:55:39

标签: java spring spring-boot

我有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吗?

谢谢

1 个答案:

答案 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都可以被初始化并用于单独类中的测试用例。