当前位置: 首页 > 知识库问答 >
问题:

Cucumber Runner不加载所有使用空手道的特征文件

许承悦
2023-03-14

我正在使用空手道测试REST API,现在我正在尝试并行运行特性文件:

@CucumberOptions(tags = { "@someTest" })
public class ParallelTest {

@Test
public void testParallel() {
    KarateStats stats = CucumberRunner.parallel(getClass(), 5, 
    "target/surefire-reports/cucumber-html-reports");
    Assert.assertTrue(stats.getFailCount() == 0, "scenarios failed");
   }
}

该测试仅并行运行3个特性文件,并不运行所有5个特性。我从CucumberRunner.Parallel函数中得到了这段代码:

CucumberRunner runner = new CucumberRunner(this.getClass());
List<FeatureFile> featureFiles = runner.getFeatureFiles();
  public static KarateStats parallel(Class clazz, int threadCount, String reportDir) {
    KarateStats stats = KarateStats.startTimer();
    ExecutorService executor = Executors.newFixedThreadPool(threadCount);
    CucumberRunner runner = new CucumberRunner(clazz);
    List<FeatureFile> featureFiles = runner.getFeatureFiles();
    List<Callable<KarateJunitFormatter>> callables = new ArrayList<>(featureFiles.size());
    int count = featureFiles.size();
    for (int i = 0; i < count; i++) {
        int index = i + 1;
        FeatureFile featureFile = featureFiles.get(i);
        callables.add(() -> {
            String threadName = Thread.currentThread().getName();
            KarateJunitFormatter formatter = getFormatter(reportDir, featureFile);
            logger.info(">>>> feature {} of {} on thread {}: {}", index, count, threadName, featureFile.feature.getPath());
            runner.run(featureFile, formatter);
            logger.info("<<<< feature {} of {} on thread {}: {}", index, count, threadName, featureFile.feature.getPath());
            formatter.done();
            return formatter;
        });
    }
    try {
        List<Future<KarateJunitFormatter>> futures = executor.invokeAll(callables);
        stats.stopTimer();
        for (Future<KarateJunitFormatter> future : futures) {
            KarateJunitFormatter formatter = future.get();
            stats.addToTestCount(formatter.getTestCount());
            stats.addToFailCount(formatter.getFailCount());
            stats.addToSkipCount(formatter.getSkipCount());
            stats.addToTimeTaken(formatter.getTimeTaken());
            if (formatter.isFail()) {
                stats.addToFailedList(formatter.getFeaturePath());
            }
        }
        stats.printStats(threadCount);
        return stats;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

共有1个答案

阎知
2023-03-14

最简单的解释是@cucumberoptions中的tags正在发挥作用。试着评论一下,然后再试一次。除此之外,从你提供的信息中我也看不出什么。

 类似资料:
  • 我试图建立一系列触发空手道场景的加特林测试。我对功能文件所做的更改只是偶尔被加特林发现。例如,在下面的功能文件代码中,运行前四个项目(包括注释掉的“关系”行): 其余的不是。请参阅运行结果的附加屏幕:在此输入图像描述 POM供参考版本: 我怀疑像编译文件这样的东西在进行更改时不会刷新或重新编译。

  • 我有一个活动,我使用空手道模拟。其中一个API返回一个响应,但在一段延迟后,它还会调用另一个API(模拟工作负载的处理) 我希望达到以下目标: 我现在的处境是 在一个单独的功能文件中调用B,我可以从另一个功能文件中调用它。 所以我想我在空手道中与异步呼叫作斗争。 我确实创建了一个实现异步执行的Java类,但我不确定如何从它调用功能文件。这将立即为我解决这个问题。 还有没有更好的方法?

  • 第一特征给定ur“” def有效负载=read(") 请求有效载荷 肥皂行动" 值= /Envelope/Body/Response/Result/Num print value#按预期正确打印值 second.feature背景:*def fetch=read('first.feature')*def data=call fetch 情景: 打印数据。response#以json格式打印soap

  • 我遵循DemotestSelected.java示例在我的空手道框架中运行特性文件。当我在Intellij中运行它们时,它工作得很好。但当我将其转换为jar并运行时,它会抛出以下错误。 java.lang.RuntimeException:java.io.FileNotFoundException:file:\c:\src_path\target\app-jar-with-dependencies

  • 我有一个模拟: 测试1。特色: 测试2。特色: 因为test1。功能失败,我希望Gatling停止该场景,而不打印“2”,但在我看到的日志中: 我做错什么了吗?谢谢

  • 我有以下问题: 空手道是否使用解释器或编译器,功能文件代码究竟是如何工作的 有没有其他方法可以使用java/js和KarateAPI编写Junit测试?或者唯一的方法是特征文件 TIA