2015-08-13 71 views
5

我在classpath(src/main/resources /)的根目錄下的application.yml文件中有我的配置。正常啓動應用程序時,配置正常加載。但是在我的測試中,application.yml文件根本沒有加載。Spring Boot MockMVC測試不加載Yaml文件

我測試的頭看起來如下:

@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

因爲你做錯了。你應該使用'@ SpringApplicationConfiguration'而不是'@ ContextConfiguration'。正如那裏[參考指南](http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications )。 –

+0

你是對的!謝謝!如果你能做出答案,我很樂意接受它。 – leo

回答

5

Spring Boot Reference Guide中有關於測試的whole chapterThis section解釋瞭如何爲Spring Boot應用程序進行基本測試。

簡而言之,當使用Spring Boot並且您想要測試時,您需要使用@ SpringApplicationConfiguration註釋而不是@ContextConfiguration註釋。 @SpringApplicationConfiguration是專用的@ContextConfiguration擴展,它也爲測試用例註冊/引導了一些Spring Boot魔術。

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

相關問題