我正试图将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
是一个标准的引导应用程序:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
也许我误解了@TestPropertySource
的预期目的?
谢谢你的帮助
下面是写在文档:
所以基本上,测试属性源可以被用来选择性地覆盖属性在系统和应用程序属性源中定义。@TestPropertySource是一个类级别的注释,用于配置属性文件的locations()和内联属性()添加到环境的属性资源集集成测试的应用程序上下文。
如果将@TestPropertySource
声明为空注释(即,没有显式的locations()或properties()值),则将尝试检测相对于声明注释的类的默认属性文件。例如,如果带注释的测试类是com.example.MyTest
,对应的默认属性文件是"classpath:com/example/MyTest.properties
"。如果无法检测到默认值,则抛出一个IllegalStateException
。
在您的例子中,文件test.properties
应该放在resources
文件夹中。
你可以检查这个例子,看看它是如何工作的。