java - SpringBoot SpringApplicationBuilder

标签 java spring cucumber spring-boot

我需要通过创建 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() 的属性(名称、值)对的值。我尝试了以下方法来设置它们:-

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

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

关于如何解决这个问题的任何想法。非常感谢所有帮助! 我需要将这些属性作为 Spring 属性以确保应用程序正常运行。也许我可以通过其他方式使用 Spring Prop 测试我的代码?如果可以,我该怎么做?

最佳答案

您可以配置如下属性:

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

关于java - SpringBoot SpringApplicationBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28936320/

相关文章:

java - 使用id查找元素获取信息并添加到数组android java

java - 是否可以根据模型更改动态更新 SWT StyledText 小部件?

java - ImapIdleChannelAdapter 任务调度程序线程配置

java - HttpServletRequest 到 MultipartHttpServletRequest : ClassCastException in Junit

java - 如何确保目录中的图像在更改后刷新?

internationalization - cucumber /小 cucumber 的翻译在哪里?

java - 在 Java 程序中删除一个单词

java - 如何使特定标签在 JList 中闪烁

ruby - cucumber 测试的步骤定义应该能够处理 "a"和 "an"[正则表达式相关]

Ruby Selenium Net::ReadTimeout