在顺序 运行 空手道测试之间保留数据库

Persist database between sequentially running Karate tests

我有一个 GraphQL 服务,我正在使用 Karate 进行测试。我有一个突变特性和几个查询特性。我正在进行 Spring 启动集成测试,就像这样

@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");
}

我的想法是,与其用代码将一堆数据暂存到我的 H2 数据库中,不如先测试我的突变(从而暂存一些数据),然后测试我的 queries/the 计算这些查询需要做的。

当我的突变具有 运行 时,一切正常。但是我的查询功能没有看到任何数据。这让我想知道它们是否按照我想要的相反顺序排列 运行,以及是否有任何方法可以让它们按顺序排列 运行。

好吧,也许你应该先阅读以下内容:

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

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

请注意,@Karate.Test 注释不是 CI 中 运行 测试套件的推荐方式: - 我认为它不尊重您调用 feature().

的顺序

如果突变流是纯粹的“设置”,只需在 运行 设置“主”套件之前在 JUnit 代码中调用它: