【问题标题】:Using Spring Boot's configuration in karate config在空手道配置中使用 Spring Boot 的配置
【发布时间】:2018-07-04 15:02:45
【问题描述】:

我有一个 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 作为跑步者启动测试并生成报告。

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

【问题讨论】:

    标签: java spring-boot karate


    【解决方案1】:

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

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

    ServerStartedInitializingBean.java - 示例使用ServerStart.java

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

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

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

    【讨论】:

    • 非常感谢,您的示例很有帮助。最后,主要是我头脑清醒。我的思绪被文档中的示例所困扰,在@BeforeClass 中设置系统属性......这可以在任何地方完成:D。我可以将我的属性绑定到一个组件 bean 并通过系统属性将其传递给空手道。
    猜你喜欢
    • 2017-09-19
    • 2016-01-19
    • 1970-01-01
    • 2019-09-10
    • 2018-08-30
    • 2018-10-25
    • 2013-11-01
    • 2015-07-27
    • 1970-01-01
    相关资源
    最近更新 更多