Spring Test:为什么无法访问 application.properties?

Spring Test : why cannot access application.properties?

提问人:AntonBoarf 提问时间:6/26/2022 更新时间:6/28/2022 访问量:3478

问:

我正在构建一个非常简单的Spring Boot应用程序。它没有代码,只是一个简单的测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTest {

    @Value("${my.key}")
    private String key;

    @Test
    public void test() {
        System.out.println(key);
    }
}

my.key在内部定义(在 notsrc/main/resources/application.propertiesmain/test/)

测试没有通过,因为找不到属性(但如果我把这个属性放在里面,它就可以工作了)my.keysrc/test/resources/application.properties

我敢肯定,我已经看到了很多Spring Boot应用程序,其中测试类从中读取属性/main/resources/application.properties

但在这里它不起作用。

spring-boot spring-test

评论


答:

1赞 user3776401 6/26/2022 #1

您可以使用 @TestPropertySource 来覆盖 application.properties 的位置。

@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource(locations="classpath:application.properties")
public class MyTest {

}

有关如何使用它的进一步帮助,请查看此处

3赞 rieckpil 6/28/2022 #2

如果还在 中添加一个文件,这将“覆盖”中的文件,因此不会看到您在 “production” 属性文件中定义的键。application.propertiessrc/test/resourcessrc/main/resources

因此,要么删除 in 以使用属性文件,要么在那里定义值。application.propertiessrc/test/resourcessrc/main/resources