Karate并行运行器问题:单个Feature文件被执行两次
解决Karate并行运行时单个Feature重复执行的问题
问题分析
你的场景中,Karate Runner扫描指定文件夹路径时,将同一个logic.feature文件识别为两个独立的feature条目,导致重复执行。常见触发原因包括:
- classpath中存在相同路径的
logic.feature副本(比如源文件与编译后生成的文件同时被纳入扫描范围) - 文件夹路径扫描规则触发了重复匹配
- Runner未启用路径去重机制
修复方案
1. 直接指定具体Feature文件路径
将Runner的路径指向单个feature文件而非文件夹,从根源避免扫描到重复条目:
Results results = Runner.path("classpath:pl/warta/karate/tests/regression/parametersMapping/prepareInitialRequest/clientNameAndSurname/features/logic.feature")
2. 清理classpath中的重复文件
检查项目的target或build目录,确认是否存在编译生成的logic.feature副本,与src/test/resources下的源文件同时被包含在classpath中。执行构建工具的清理命令(如Maven的mvn clean、Gradle的gradle clean)后重新运行测试,消除重复文件。
3. 启用Runner的路径去重机制
在Runner配置中添加distinct()方法,强制对扫描到的feature路径进行去重处理:
Results results = Runner.path("classpath:pl/warta/karate/tests/regression/parametersMapping/prepareInitialRequest/clientNameAndSurname/features") .distinct()
4. 排除Scenario Outline的正常多轮执行(澄清误解)
若你的Scenario Outline包含多组Examples测试数据,Karate会为每组数据执行一次场景,但日志会标注场景执行次数而非feature计数。你的日志明确显示feature 2 of 2,因此不属于这种情况,可跳过此检查。
内容的提问来源于stack exchange,提问作者Test12345
相关产品推荐
相关产品推荐

