我有一个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作为跑步者,启动测试并生成报告。
如果有人有一个有效的想法,它将使我的一天:)。
我真的没有这些特殊的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
。