6

我在类路径根目录(src/main/resources/)的 application.yml 文件中有我的配置。当我正常启动应用程序时,配置加载正常。但是在我的测试中,application.yml 文件根本没有加载。

我的测试标题如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = Configuration.class)
@org.junit.Ignore
public class ApplicationIntegrationTest {

   @Inject
   private WebApplicationContext wac;

   private MockMvc mockMvc;

   @Before
   public void setup() {
       this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
   }
...

配置类:

@EnableAutoConfiguration
@ComponentScan("c.e.t.s.web, c.e.t.s.service")
public class Configuration extends WebMvcConfigurerAdapter {

当我调试应用程序时,我看到 yml 文件在 ConfigFileApplicationListener 中加载,但在测试中未调用 ConfigFileApplicationListener。

4

2 回答 2

7

Spring Boot 参考指南中有一整章关于测试。本节介绍如何对 Spring Boot 应用程序进行基本测试。

简而言之,当使用 Spring Boot 并且您想要进行测试时,您需要使用@ SpringApplicationConfiguration注解而不是@ContextConfiguration注解。这@SpringApplicationConfiguration是一个专门的@ContextConfiguration扩展,它也为测试用例注册/引导一些 Spring Boot 魔法。

于 2015-08-13T11:32:41.073 回答
0

StringBoot、jUnit 和 YAML 之间有很好的集成。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(MainBootApplication.class)
public class MyJUnitTests {
    ...
}


@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "section1")
public class BeanWithPropertiesFromYML {
    ...
}

有关更多详细信息,请在此处查看我的评论:https ://stackoverflow.com/a/372​​70778/3634283

于 2016-05-17T08:45:41.193 回答