我有一个Spring Boot应用程序,可在主要源代码集中以编程方式启动空手道测试。该应用程序应该为每个环境配置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 是启动测试并生成报告的跑步者。
如果某人有一个可行的主意,那将是我的事业:)
答案 0 :(得分:1)
我真的没有这些特定的Spring Boot测试基础经验。但是抛出一些想法。
事实上,我发现Spring Boot有时会引入“太多的魔术”。因此,我采用的一种方法是使用“ java优先原则”,并引入一个prod bean,其唯一目的是使测试更容易从单元测试启动的应用程序中获取信息:
ServerStartedInitializingBean.java-例如使用ServerStart.java
如果您查看这些测试,可能会得到更多的想法:PaymentService.java-使用main(String[] args)
启动Spring Boot应用程序时,您可以直接控制配置。
如果从您的Spring Boot初始化代码中,您可以设置一个System.property
,足以将数据传递给空手道。