Gatling运行提示RecordedSimulation场景为空但实际非空如何解决
运行环境
- Gatling 版本:3.8.1
问题现象
通过Gatling Recorder录制测试场景后,命令行运行时抛出错误:"Scenario RecordedSimulation is empty",但实际录制生成的场景文件包含有效请求逻辑,相关运行截图如下:

根因排查&解决方案
该错误本质是Gatling加载到的Simulation类没有绑定有效场景执行链路,常见诱因和对应修复方式如下:
- 类全限定名不匹配(最高发)
录制生成的Scala文件如果顶部声明了package,运行时如果直接选择无包路径的RecordedSimulation,Gatling会加载到空的占位类而非录制的有效类。排查方式:打开录制生成的
RecordedSimulation.scala文件,查看顶部的package声明,运行时选择「包名.RecordedSimulation」格式的完整类名即可。 - 场景未绑定到setUp执行块
如果录制过程中出现中断、或Recorder配置错误,可能出现请求链路定义完成,但未被注册到启动入口的情况。排查方式:打开生成的Scala文件,确认文件末尾存在如下完整结构,缺失部分手动补全即可:
// 公共HTTP协议配置 val httpProtocol = http .baseUrl("录制的目标服务地址") .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // 其余自动生成的公共头、配置项 // 录制的场景链路 val scn = scenario("RecordedSimulation") .exec(/* 自动生成的所有请求执行步骤 */) // 启动入口,必须正确引用上面定义的scn setUp( scn.inject(atOnceUsers(1)) ).protocols(httpProtocol) - 文件存放路径错误
Gatling默认只会扫描<Gatling安装根目录>/user-files/simulations路径下的Simulation类,如果录制生成的文件被存放到其他路径,Gatling无法读取到有效逻辑就会抛出空场景错误,将文件移动到上述指定目录即可。 - 同名类冲突
如果之前创建过空的同名RecordedSimulation类,运行时可能出现类加载优先级冲突,加载到旧的空类,删除目录下所有无效的同名空类文件即可。
内容的提问来源于stack exchange,提问作者Igor Vlasuyk
相关产品推荐
相关产品推荐

