小编典典

Spring Boot集成测试不读取属性文件

spring-boot

我想创建一个集成测试,其中Spring Boot将使用 @Value 批注从.properties文件读取一个值。
但是每次我运行测试时,我的断言都会失败,因为Spring无法读取该值:

org.junit.ComparisonFailure: 
Expected :works!
Actual   :${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!");
    }
}

src / main / resource包下的application-test.properties包含:

test=works!

这种行为的原因可能是什么,我该如何解决?
任何帮助,高度赞赏。


阅读 317

收藏
2020-05-30

共1个答案

小编典典

您应该使用@PropertySource或@TestPropertySource加载application-test.properties

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

}
2020-05-30