我有一个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