Cucumber API 用于列出/运行功能/场景/标签

问题描述 投票:0回答:1

是否有一些 API(用于 Java 语言)可用于:

  1. 检索功能文件列表及其所有场景
  2. 检索标签列表
  3. 根据 1 和 2 中的信息,按名称或按标签运行这些功能/场景的子集。

我打算用 REST 端点包装这些 API。

cucumber bdd cucumber-java cucumber-junit
1个回答
0
投票

如果您将 Cucumber 与 JUnit (5) Platform Engine 结合使用,则可以使用 JUnit Launcher API 以编程方式执行所有这些操作。

例如列出所有标签:

package io.cucumber.skeleton;

import io.cucumber.junit.platform.engine.Constants;
import org.junit.platform.engine.discovery.DiscoverySelectors;
import org.junit.platform.launcher.Launcher;
import org.junit.platform.launcher.TestIdentifier;
import org.junit.platform.launcher.TestPlan;
import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder;
import org.junit.platform.launcher.core.LauncherFactory;

public class LauncherDemo {

  public static void main(String[] args) {

    Launcher launcher = LauncherFactory.create();

    TestPlan testPlan = launcher.discover(
        LauncherDiscoveryRequestBuilder.request()
            .configurationParameter(Constants.JUNIT_PLATFORM_NAMING_STRATEGY_PROPERTY_NAME, "long")
            .selectors(DiscoverySelectors.selectPackage("io.cucumber.skeleton"))
            .build()
    );
    
    testPlan.getRoots().stream()
        .flatMap(root -> testPlan.getDescendants(root).stream())
        .filter(TestIdentifier::isTest)
        .forEach(testIdentifier -> {
          System.out.println(testIdentifier.getDisplayName() + " " + testIdentifier.getTags());
        });
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.