使用Gradle运行Gatling Scala性能测试成功却无报告求助
我是Gatling和Scala新手,跟着入门教程做测试,但使用Gradle wrapper执行。在IntelliJ IDEA中创建Gradle项目后,build.gradle配置如下:
buildscript { repositories { maven { url '<url>' credentials { <> } } } dependencies { classpath "gradle.plugin.io.gatling.gradle:gatling-gradle-plugin:3.8.4" } } apply plugin: "io.gatling.gradle" apply plugin: 'scala' repositories { maven { url '<>' credentials { <> } } mavenCentral() } dependencies { implementation 'org.scala-lang:scala-library:2.12.4' gatling 'org.scala-lang:scala-library:2.12.4' gatling 'au.com.bytecode:opencsv:2.4' gatling group: 'org.scalaj', name: 'scalaj-http_2.12', version: '2.3.0' gatling group: 'org.json4s', name: 'json4s-native_2.12', version: '3.5.3' } compileGatlingScala { scalaCompileOptions.additionalParameters = ["-feature"] } gatling { simulations = { // Enable ALL perf testing, regardless of current pass/fail state include "**/simulation/*Simulation*.scala" } } sourceSets.gatling.resources.srcDir('conf') gatling { logLevel = 'WARN' // logback root level logHttp = 'ALL' }
注:额外添加了opencsv等依赖,用于后续性能测试。
我的LoadSimulation.scala脚本内容:
class LoadSimulation extends Simulation { val scn = scenario("JSON") .exec( http("GET") .get("http://jsonplaceholder.typicode.com/comments") ) setUp( scn.inject(atOnceUsers(1)) ) }
执行命令gradlew gatlingRun-LoadSimulation后显示构建成功,但/build/reports目录下找不到测试结果:
>gradlew gatlingRun-LoadSimulation BUILD SUCCESSFUL in 1s 3 actionable tasks: 1 executed, 2 up-to-date
编辑:根据建议更新依赖后,问题依旧,/build/reports/gatling目录仍为空:
dependencies { implementation 'org.scala-lang:scala-library:2.13' gatling 'org.scala-lang:scala-library:2.13' gatling 'au.com.bytecode:opencsv:2.4' gatling group: 'org.scalaj', name: 'scalaj-http_2.13', version: '2.4.2' gatling group: 'org.json4s', name: 'json4s-native_2.13', version: '3.6.7' }
针对你的问题,按以下步骤排查修复:
检查仿真文件路径匹配规则
你的gatling.simulations配置为include "**/simulation/*Simulation*.scala",要求仿真文件必须位于包含simulation的目录下,且文件名包含Simulation。确认LoadSimulation.scala是否放在src/gatling/scala/simulation目录中——Gatling Gradle插件默认源码路径是src/gatling/scala,如果文件直接放在根目录或路径不含simulation,插件会无法识别。合并重复的
gatling配置块
你在build.gradle中定义了两个独立的gatling块,Gradle会用后面的配置覆盖前面的,导致simulations规则失效。将两个块合并为一个:gatling { simulations = { include "**/simulation/*Simulation*.scala" } logLevel = 'WARN' logHttp = 'ALL' }确保Scala版本与插件兼容
Gatling 3.8.4仅支持Scala 2.12.x版本,你切换到2.13会引发兼容性问题。改回Scala 2.12的稳定版本(如2.12.18),同时保证所有依赖的Scala版本后缀一致(例如scalaj-http使用_2.12版本)。查看任务执行详细日志
执行命令时添加--info参数获取详细日志:gradlew gatlingRun-LoadSimulation --info日志会显示插件是否找到仿真类、测试是否执行、报告生成路径等信息。如果出现“no simulations found”提示,重点检查路径和配置规则。
验证Gatling任务是否存在
执行gradlew tasks --group gatling,查看是否存在gatlingRun-LoadSimulation任务。若不存在,说明插件未识别到你的仿真类,需回到路径和配置排查。
内容的提问来源于stack exchange,提问作者ljs

