Spring Boot integration tests doesn't read properties files

岁酱吖の 提交于 2019-12-05 01:57:45

问题


I would like to create integration test in which Spring Boot will read a value from .properties file using @Value annotation.
But every time I'm running test my assertion fails because Spring is unable to read the value:

org.junit.ComparisonFailure: 
Expected :works!
Actual   :${test}

My test:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class})
public class WebTests {
    @Configuration
    @ActiveProfiles("test")
    static class ConfigurationClass {}

    @Component
    static class ClassToTest{
        @Value("${test}")
        private String test;
    }

    @Autowired
    private ClassToTest config;

    @Test
    public void testTransferService() {
        Assert.assertEquals(config.test, "works!");
    }
}

application-test.properties under src/main/resource package contains:

test=works! 

What can be the reason of that behavior and how can I fix it?
Any help highly appreciated.


回答1:


You should load the application-test.properties using @PropertySource or @TestPropertySource

@RunWith(SpringJUnit4ClassRunner.class)
@TestPropertySource(locations="classpath:application-test.properties")
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class})
public class WebTests {

}

for more info: Look into this Override default Spring-Boot application.properties settings in Junit Test




回答2:


Besides the above marked correct answer, there is another nature way to load application-test.properties: Set your test run "profile" to "test".

Mark your test cases with:

@ActiveProfiles("test")
@RunWith(SpringJUnit4ClassRunner.class)

application-xxxx.properties is a naming convention for properties of different "profile".

"Profile" is also useful in bean configuration.



来源:https://stackoverflow.com/questions/42396982/spring-boot-integration-tests-doesnt-read-properties-files

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!