Spring测试:为什么不能访问application.properties?



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

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTest {
@Value("${my.key}")
private String key;
@Test
public void test() {
System.out.println(key);
}
}

my.keysrc/main/resources/application.properties内定义(在main/中,不在test/中)

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

我确信我见过很多Spring Boot应用程序,其中测试类从/main/resources/application.properties读取属性

但是这里不起作用。

如果您还在src/test/resources中添加了一个application.properties文件,这将'覆盖';src/main/resources中的键,因此没有您在"生产"中定义的键。将会看到属性文件

所以要么删除src/test/resources中的application.properties,在src/main/resources中使用你的属性文件,要么在那里定义你的值。

你可以使用@TestPropertySource重写application.properties.

的位置。
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource(locations="classpath:application.properties")
public class MyTest {
}

关于如何使用它的进一步帮助,请点击这里

相关内容

  • 没有找到相关文章

最新更新