首页 > 解决方案 > 在空手道配置中使用 Spring Boot 的配置

问题描述

我有一个 Spring Boot 应用程序,它在主源集中以编程方式启动空手道测试。这个应用程序应该为每个环境配置几个空手道将使用的 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是启动测试并生成报告的跑步者。

如果有人有一个可行的想法,那会让我很开心:)。

标签: javaspring-bootkarate

解决方案


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

事实上,我发现 Spring Boot 有时会像这样引入“太多魔法”。所以我采取的一种方法是使用“java第一原则”并引入一个prod bean,其唯一目的是让测试更容易从单元测试启动的应用程序中获取信息:

ServerStartedInitializingBean.java - 示例使用ServerStart.java

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

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

另请参阅此答案:https ://stackoverflow.com/a/45962035/143475


推荐阅读