我正在使用空手道测试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);
}
}
最简单的解释是@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