在顺序运行空手道测试之间持久化数据库



我有一个GraphQL服务,我正在使用空手道测试。我有一个用于突变的特性和几个用于查询的特性。我正在做一个弹簧引导集成测试,就像

@SpringBootTest(classes=ApplicationTest.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class RunUnitCukeTest implements InitializingBean {
@LocalServerPort
int port;
@Karate.Test
Karate runTest() {
return new Karate()//
.feature("classpath:features/TestMutationsAndDatabaseSetup.feature")
.feature("classpath:features/Queries.feature");
}

我的想法是,而不是在代码中staging一堆数据到我的H2数据库中,我可以先测试我的突变(从而staging一些数据),然后测试我的查询/这些查询需要做的计算。

当我的突变特性运行时,一切都工作正常。但是我的查询功能看不到任何数据。这让我怀疑它们是否按照我想要的相反顺序运行,以及是否有办法让它们按顺序运行。

嗯,也许你应该先看看这个:https://stackoverflow.com/a/46080568/143475

也许你应该做的是用karate-config.js中的karate.callSingle()来做突变,然后开始其余的测试。

是的,空手道被设计为并行运行测试,并强制您在Scenario-s之间没有依赖关系,更不用说Feature-s了。

请注意,@Karate.Test注释不是在CI中运行测试套件的推荐方式:https://stackoverflow.com/a/65578167/143475 -而且我认为它不尊重您调用feature()的顺序。

如果突变流是纯的"设置",只需在运行"main"之前在JUnit代码中调用它即可。套房:https://stackoverflow.com/a/60944060/143475