使用gatling-highchart-bundle执行karate-gatling用例未生成日志与报告
Gatling+Karate执行无日志无报告排查修复步骤
1 验证执行命令与仿真类配置匹配
- 执行时必须指定仿真类的全限定名,参考命令:
Linux/macOS:./gatling.sh -s com.yourpackage.YourKarateSimulation
Windows:gatling.bat -s com.yourpackage.YourKarateSimulation - 检查仿真文件的存放路径是否匹配包名:如果仿真类开头声明
package com.karate.test,则文件必须放在user-files/simulation/com/karate/test目录下,不要直接放在simulation根目录。
2 校验classpath配置有效性
- 不建议直接修改gatling.sh/gatling.bat的原生配置,优先用两种方式配置classpath:
- 把Karate相关依赖jar包全部放到Gatling安装目录的
lib文件夹下 - 执行前临时追加classpath:
Linux/macOS:export GATLING_CLASSPATH=/your/karate/feature/dir:$GATLING_CLASSPATH && ./gatling.sh -s 仿真类全限定名
Windows:set GATLING_CLASSPATH=C:\your\karate\feature\dir;%GATLING_CLASSPATH% && gatling.bat -s 仿真类全限定名
- 把Karate相关依赖jar包全部放到Gatling安装目录的
- 可在仿真类代码开头加打印逻辑验证classpath:
println("当前classpath:" + System.getProperty("java.class.path")),执行后看控制台是否输出了你配置的Karate文件目录。
3 检查仿真类代码逻辑
仿真类必须符合Karate-Gatling的规范写法,参考示例:
package com.karate.test import com.intuit.karate.gatling.PreDef._ import io.gatling.core.Predef._ import scala.concurrent.duration._ class MyTestSimulation extends Simulation { val protocol = karateProtocol() val testScenario = scenario("接口压测场景").exec(karateFeature("classpath:test.feature")) setUp(testScenario.inject(atOnceUsers(1)).protocols(protocol)) }
- 必须继承Karate相关的仿真类,特性文件路径要和classpath配置匹配:比如classpath包含了
user-files/simulation/features,就直接写classpath:xxx.feature即可,不要写绝对路径。
4 调整日志配置排查报错
打开Gatling安装目录下的conf/logback.xml,把root日志级别调整为INFO,确保日志正常输出:
<root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root>
执行后查看logs目录下的运行日志,根据具体报错修复,常见问题包括缺少Karate依赖、特性文件找不到、仿真类编译失败。
5 验证报告生成逻辑
- 只有仿真任务完整执行结束才会生成报告,执行过程中手动终止、代码异常中断都不会生成报告
- 确认Gatling安装目录下的
results文件夹有写入权限,若该目录下已生成带时间戳的结果子目录且子目录内存在simulation.log,可手动生成报告:
Linux/macOS:./gatling.sh -ro /path/to/results/测试结果目录名
Windows:gatling.bat -ro C:\path\to\results\测试结果目录名
内容的提问来源于stack exchange,提问作者santhosh
相关产品推荐
相关产品推荐

