SpringBoot SpringApplicationBuilder
SpringBoot 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,检索 Mutable属性Sources
并在其中设置我的属性。
None 这些选项有效,因此当应用程序启动并且代码尝试访问某些系统 属性 值时,它会中断。
关于如何解决这个问题的任何想法。非常感谢所有帮助!
我需要这些属性是 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
我自己也遇到过同样的问题。
我的问题是我试图设置其值的键也在 application.properties 文件中设置。
从文件中删除条目后,它起作用了。
我需要通过创建 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,检索 Mutable属性Sources 并在其中设置我的属性。
None 这些选项有效,因此当应用程序启动并且代码尝试访问某些系统 属性 值时,它会中断。
关于如何解决这个问题的任何想法。非常感谢所有帮助! 我需要这些属性是 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
我自己也遇到过同样的问题。 我的问题是我试图设置其值的键也在 application.properties 文件中设置。
从文件中删除条目后,它起作用了。