【问题标题】:How to fix [ERROR] i.g.a.Gatling$ - Run crashed java.lang.IllegalArgumentException: requirement failed: No scenario set up?如何修复 [错误] i.g.a.Gatling$ - 运行崩溃的 java.lang.IllegalArgumentException:要求失败:没有设置场景?
【发布时间】:2021-01-27 05:44:33
【问题描述】:

我正在尝试通过命令 gatling:test 运行我的 gatling 测试,我得到了这个结果:

[info] Simulation CheckPerformance successful.
13:08:30.196 [ERROR] i.g.a.Gatling$ - Run crashed
java.lang.IllegalArgumentException: requirement failed: No scenario set up
        at scala.Predef$.require(Predef.scala:281)
        at io.gatling.core.scenario.Simulation.params(Simulation.scala:129)
        at io.gatling.app.Runner.run0(Runner.scala:76)
        at io.gatling.app.Runner.run(Runner.scala:60)
        at io.gatling.app.Gatling$.start(Gatling.scala:80)
        at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
        at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:52)
        at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:51)
        at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
[error] java.lang.IllegalArgumentException: requirement failed: No scenario set up
[error]         at scala.Predef$.require(Predef.scala:281)
[error]         at io.gatling.core.scenario.Simulation.params(Simulation.scala:129)
[error]         at io.gatling.app.Runner.run0(Runner.scala:76)
[error]         at io.gatling.app.Runner.run(Runner.scala:60)
[error]         at io.gatling.app.Gatling$.start(Gatling.scala:80)
[error]         at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
[error]         at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:52)
[error]         at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:51)
[error]         at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error]         at java.base/java.lang.Thread.run(Thread.java:834)
[error] Simulation BaseSimulation failed.
[info] Simulation(s) execution ended.

BaseSimulation scala 类仅包含 baseURL

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

class BaseSimulation extends Simulation {

  val httpProtocol = http
    .baseUrl("https://baseurl.com")
}

我尝试使用命令 gatling:testOnly package.TestClass 仅运行测试。它在本地工作,但 gitlab ci 作业中的相同命令会导致相同的错误,即使所有测试都成功通过。

[info] Simulation CheckPerformance successful.
 09:52:02.214 [ERROR] i.g.a.Gatling$ - Run crashed
 java.lang.IllegalArgumentException: requirement failed: No scenario set up
    at scala.Predef$.require(Predef.scala:281)
    at io.gatling.core.scenario.Simulation.params(Simulation.scala:129)
    at io.gatling.app.Runner.run0(Runner.scala:76)
    at io.gatling.app.Runner.run(Runner.scala:60)
    at io.gatling.app.Gatling$.start(Gatling.scala:80)
    at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
    at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:52)
    at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:51)
    at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
 [error] java.lang.IllegalArgumentException: requirement failed: No scenario set up
 [error]    at scala.Predef$.require(Predef.scala:281)
 [error]    at io.gatling.core.scenario.Simulation.params(Simulation.scala:129)
 [error]    at io.gatling.app.Runner.run0(Runner.scala:76)
 [error]    at io.gatling.app.Runner.run(Runner.scala:60)
 [error]    at io.gatling.app.Gatling$.start(Gatling.scala:80)
 [error]    at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
 [error]    at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:52)
 [error]    at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:51)
 [error]    at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
 [error]    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 [error]    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 [error]    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 [error]    at java.lang.Thread.run(Thread.java:748)
 [error] Simulation BaseSimulation failed.
 [info] Simulation(s) execution ended.
 [error] Failed tests:
 [error]    package.BaseSimulation
 [error] (Gatling / testOnly) sbt.TestsFailedException: Tests unsuccessful
 [error] Total time: 22 s, completed May 20, 2020 9:52:02 AM
Running after_script
Uploading artifacts for failed job
00:03
 Uploading artifacts...
 target/gatling/: found 42 matching files           
 Uploading artifacts to coordinator... ok            id=833478 responseStatus=201 Created token=d3PcCfw5
 ERROR: Job failed: exit code 1

我错过了什么?我很乐意听到任何想法!

【问题讨论】:

    标签: scala continuous-integration gatling


    【解决方案1】:

    在末尾添加设置注释 示例代码

    val headers_10 = Map("Content-Type" -> """application/json""")
    
      val httpProtocol = http
        .baseUrl("https://reqres.in")
    
      val scn = scenario("BasicSimulation")
        .exec(http("request_1")
        .post("/api/users")
          .headers(headers_10)
        .body(StringBody("""{
                               "name": "morpheus",
                               "job": "leader"
                           } """)).asJson)
        .pause(5)
    
      setUp(
        scn.inject(atOnceUsers(50)) // 12
      ).protocols(httpProtocol)
    

    【讨论】:

      【解决方案2】:

      如果您尝试扩展到未列出任何场景的 BaseSimulation,则应将其添加到您的 pom.xml

                  <configuration>
                      <runMultipleSimulations>true</runMultipleSimulations>
                      <excludes>
                          <exclude>packageName.BaseSimulation</exclude>
                      </excludes>
                  </configuration>
      

      【讨论】:

        【解决方案3】:

        错误是不言自明的:没有设置场景。

        class BaseSimulation extends Simulation {
        
          val httpProtocol = http
            .baseUrl("https://baseurl.com")
        }
        

        这不是有效的加特林模拟。

        您不定义场景和设置。

        请查看official documentation,尤其是教程。

        【讨论】:

          猜你喜欢
          • 2015-05-05
          • 2020-06-20
          • 1970-01-01
          • 2014-03-03
          • 1970-01-01
          • 2016-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多