SpringApplicationBuilder

SpringApplicationBuilder

我需要通过创建Cucumber集成测试来测试我的Spring应用程序代码。我正在使用SpringApplicationBuilder在触发实际逻辑之前启动我的应用程序,并且正在使用以下语法来这样做:

application = new SpringApplicationBuilder()
    .parent(new Object[]{"classpath:file1.xml", "classpath:file2.xml"})
    .profiles("abc")
    .properties("name:value") [It has 5/6 (name:value) pairs here]*
    .showBanner(false)
    .logStartupInfo(true)
    .headless(true)
    .application()
    .run();


我的Spring应用程序正确启动。但是,它没有获取我传递给SpringApplicationBuilder()的属性(名称,值)对的值。我尝试了以下设置它们:


如上所述使用名称值对
使用(名称,值)对的HashMap列出项目
创建一个ConfigurableEnvironment,检索MutablePropertySources
并在其中设置我的属性。


这些选项都不起作用,因此当应用程序启动并且代码尝试访问某些系统属性值时,它就会中断。

任何想法如何解决此问题。非常感谢所有帮助!
我需要将这些属性设置为Spring属性,以确保应用正常运行。也许我可以使用Spring道具以其他方式测试我的代码?如果是这样,我该怎么办?

最佳答案

您可以如下配置属性:

application = new SpringApplicationBuilder()
    .parent(new Object[]{"classpath:file1.xml", "classpath:file2.xml"})
    .profiles("abc")
    .properties("key1:test1", "key2:test2")
    .showBanner(false)
    .logStartupInfo(true)
    .headless(true)
    .application()
    .run();


现在,使用@Value批注检索属性:

@Value("${key1}")
String val;


val变量将被赋值为test1

08-06 18:49