簡體   English   中英

如何修復 [錯誤] igaGatling$ - 運行崩潰 java.lang.IllegalArgumentException:要求失敗:未設置場景?

[英]How to fix [ERROR] i.g.a.Gatling$ - Run crashed java.lang.IllegalArgumentException: requirement failed: No scenario set up?

我正在嘗試通過命令 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 class 僅包含 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

我錯過了什么? 我很樂意聽到任何想法!

錯誤是不言自明的:沒有設置場景。

class BaseSimulation extends Simulation {

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

這不是有效的加特林模擬。

您沒有定義場景和設置。

請查看官方文檔,尤其是教程。

示例代碼末尾添加設置注釋

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)

如果您嘗試擴展到未列出任何場景的 BaseSimulation,則應將其添加到您的 pom.xml

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM