我在classpath(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。
答案 0 :(得分:7)
Spring Boot Reference指南中有一个关于测试的whole chapter。 This section解释了如何为Spring Boot应用程序进行基本测试。
简而言之,在使用Spring Boot并且您想要进行测试时,您需要使用@ SpringApplicationConfiguration
注释而不是@ContextConfiguration
注释。 @SpringApplicationConfiguration
是一个专门的@ContextConfiguration
扩展,它可以为测试用例注册/引导一些Spring Boot魔法。
答案 1 :(得分: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/37270778/3634283