我尝试将一个test.properties
文件传递给@TestPropertySource
注解,如下所示:
@SpringBootTest
@TestPropertySource(locations = "classpath:test.properties")
public class ApplicationTests {
@Test
public void contextLoads() {
}
@Test
public void main() {
Application.main(new String[] {});
}
}
然后我调用主应用程序,希望test.properties
将被采用。Application.main
是一个标准的 Boot 应用程序:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
也许我误解了@TestPropertySource
的预期用途?
谢谢你的帮助
1条答案
按热度按时间lg40wkob1#
下面的内容写在documentation中:
@TestPropertySource是类别层级注解,可用来设定属性档的位置()和内嵌属性(),这些属性档和内嵌属性会加入至ApplicationContext的环境PropertySources集合,以进行整合测试。
因此,基本上,测试属性源可用于选择性地覆盖在系统和应用程序属性源中定义的属性。
如果将
@TestPropertySource
声明为空注解(即,没有locations()或属性的显式值()),则会尝试侦测与宣告注解之类别相关的预设属性档。例如,如果注解的测试类别为com.example.MyTest
,则Map的预设属性档为“classpath:com/example/MyTest.properties
“。如果无法侦测预设值,则将引发IllegalStateException
。在您的情况下,文件
test.properties
应放置在resources
文件夹中。您可以检查此example以了解其实际工作情况。