我实际上如何 运行 通过 SBT 进行 Gatling 测试

How do I actually run the Gatling test via SBT

我正在尝试使用 Gatling 对 Web 服务进行负载测试。这是我的 build.sbt

import io.gatling.sbt.GatlingPlugin

val gatlingVersion = "2.2.4"

val dependencies = Seq(
   "io.gatling" % "gatling-core" % gatlingVersion,
   "io.gatling" % "gatling-http" % gatlingVersion
)

lazy val project =
   Project("gattling-tests", file("."))
      .enablePlugins(GatlingPlugin)
      .settings(
         javaOptions in Gatling := overrideDefaultJavaOptions("-Xmx4G"),
         scalaVersion := "2.12.1",
         libraryDependencies ++= dependencies
      )

在测试文件夹下,我创建了一个 class,它扩展了 Simulation,它有我的场景和 http 请求。

import io.gatling.core.Predef._
import io.gatling.http.Predef._

class ShieldAuthLoadTests extends Simulation {
   val httpConf = http
      .baseURL("http://localhost:8080/api/1/")
      .acceptHeader("application/json")
      .contentTypeHeader("json")

   val login = http("Login")
      .post("login")
      .formParam("username", "foo")
      .formParam("password", "bar")
      .check(status.is(200), jsonPath("$..response.id").ofType[String].saveAs("id"))

   val get = http("get")
      .get("/api/api1")
      .header("token1", "$id")
      .check(status.is(200), jsonPath("$..response").exists)

   val scn = scenario("scn")
      .exec(login)
      .pause(3)
      .exec(get)

   setUp(scn.inject(atOnceUsers(10)).protocols(httpConf))
}

我希望当我进行 sbt gatling:test 时它会 运行 加特林测试。但是当我 运行 sbt gatling:test 它没有 运行 测试就成功了。

quickstart 文档说 $GATLING_HOME/bin/gatling.sh 但我没有 gatling.sh 因为我想通过 SBT 进行测试。

文档有点不一致,因为我 运行 遇到过类似的问题。

我的项目总是基于 this 以确保万无一失。

无论如何,这看起来像是您的依赖项的问题。尝试将它们更改为此...

val dependencies = Seq(
  "io.gatling.highcharts" % "gatling-charts-highcharts" % "2.2.4" % "test,it",
  "io.gatling"            % "gatling-test-framework"    % "2.2.4" % "test,it"
)

或见here

检查您的模拟是否在 src/test/scala 文件夹中创建,请参阅 https://gatling.io/docs/3.0/extensions/sbt_plugin/#default-settings