junit 传递TestPropertySource位置没有影响

balp4ylt  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(196)

我尝试将一个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的预期用途?
谢谢你的帮助

lg40wkob

lg40wkob1#

下面的内容写在documentation中:
@TestPropertySource是类别层级注解,可用来设定属性档的位置()和内嵌属性(),这些属性档和内嵌属性会加入至ApplicationContext的环境PropertySources集合,以进行整合测试。
因此,基本上,测试属性源可用于选择性地覆盖在系统和应用程序属性源中定义的属性。
如果将@TestPropertySource声明为空注解(即,没有locations()或属性的显式值()),则会尝试侦测与宣告注解之类别相关的预设属性档。例如,如果注解的测试类别为com.example.MyTest,则Map的预设属性档为“classpath:com/example/MyTest.properties“。如果无法侦测预设值,则将引发IllegalStateException
在您的情况下,文件test.properties应放置在resources文件夹中。
您可以检查此example以了解其实际工作情况。

相关问题