在空手道配置中使用Spring Boot的配置

问题描述 投票:1回答:1

我有一个Spring Boot应用程序,它在主源代码集中以编程方式启动Karate测试。该应用程序应该为每个环境配置几个将由Karate使用的URL。我还有一个spring-cloud-config服务器,它加载与当前环境(dev,prod等)对应的yaml属性文件。因此,我的属性不是项目的本地属性,并且在Spring Boot属性组件之外是不可读的。

考虑到所有这些,我希望我的空手道测试使用这些可配置的URL,但我发现无法在空手道上下文中使用包含我的属性的Spring Boot组件。

作为进一步的信息,以编程方式运行空手道测试我正在使用JUnitCore#runClasses:

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);

        // Run all tests in the application
        Result result = JUnitCore.runClasses(KarateApplicationRunner.class);  
    }
}  

使用KarateApplicationRunner作为跑步者,启动测试并生成报告。

如果有人有一个有效的想法,它将使我的一天:)。

java spring-boot karate
1个回答
1
投票

我真的没有这些特殊的Spring Boot测试基础知识的经验。但抛出一些想法。

事实上,我发现Spring Boot有时会引入“太多魔法”。因此,我采用的一种方法是使用“java first principles”并引入一个prod bean,其唯一目的是使测试更容易从单元测试启动的app中获取信息:

ServerStartedInitializingBean.java - 例如使用ServerStart.java

如果你看看这些测试,你可能会得到更多的想法:PaymentService.java - 当你使用main(String[] args)启动Spring Boot应用程序时,你可以直接控制配置。

如果从你的Spring Boot初始化代码中你可以设置一个或两个足以将数据传递给空手道的System.property

© www.soinside.com 2019 - 2024. All rights reserved.