Gatling - 要求失败:没有设置场景

Gatling - requirement failed: No scenario set up

我是编程的新手,我试图启动我的测试但我得到:线程“主”中的异常java.lang.IllegalArgumentException:要求失败:没有设置场景 即使我设置了场景(这很混乱) 我很确定很明显像我这样的新手无法弄清楚不幸的是。 我尝试使缓存无效,然后重新加载项目。 我正在使用 intelij + maven

package simulations

import io.gatling.core.Predef._
import io.gatling.core.structure.{ChainBuilder, ScenarioBuilder}
import io.gatling.http.Predef._
import io.gatling.http.protocol.HttpProtocolBuilder

class GatlingDemoStore extends Simulation {

  val domain = "demostore.gatling.io"

  val httpProtocol: HttpProtocolBuilder = http
    .baseUrl("http://" + domain)


  object login {
    def userlogin: ChainBuilder = {
      exec(http("Login User")
        .post("/login")
        .formParam("_csrf", "${csrfValue}")
        .formParam("username", "user1")
        .formParam("password", "pass"))
    }
  }

  object CmsPages {
    def homepage: ChainBuilder = {
      exec(http("Load Home Page")
        .get("/")
        .check(status.is(200))
        .check(regex("<title>Gatling Demo-Store</title>").exists)
        .check(css("#_csrf", "content").saveAs("csrfValue")))
    }

    def aboutus: ChainBuilder = {
      exec(http("Load Home Page")
        .get("/about-us")
        .check(status.is(200))
        .check(substring("About Us")))
    }

    def categories: ChainBuilder = {
      exec(http("Load Categories Page")
        .get("/category/all")
        .check(status.is(200)))
        .pause(10)
    }

    def productpage: ChainBuilder = {
      exec(http("Load Product Page")
        .get("/product/black-and-red-glasses")
        .check(status.is(200)))
        .pause(15)
    }

    def addtocart: ChainBuilder = {
      exec(http("Add Product to Cart")
        .get("/cart/add/19"))
    }

    def viewcart: ChainBuilder = {
      exec(http("View Cart")
        .get("/cart/view"))
    }

    def checkout: ChainBuilder = {
      exec(http("Checkout")
        .get("/cart/checkout"))
    }

    val User: ScenarioBuilder = scenario("DemoStore Simulation")
      .exec(CmsPages.homepage)
      .pause(5)
      .exec(CmsPages.aboutus)
      .pause(5)
      .exec(CmsPages.categories)
      .pause(20)
      .exec(CmsPages.productpage)
      .pause(5)
      .exec(CmsPages.addtocart)
      .pause(2)
      .exec(login.userlogin)


    setUp(
      User.inject(atOnceUsers(1))
    ).protocols(httpProtocol)
  }
}

我重新格式化了你的代码,这样你的错误就更明显了:你调用 setUp 不是在 GatlingDemoStore class 的正文中,而是在 class 的正文中=12=] 永远不会加载的对象(在 Scala 中,对象是延迟加载的,在这里你永远不会调用它)。

GatlingDemoStore class 的正文中移动 setUp

重要说明:由于您是编程新手,您可能应该使用 Java(从 Gatling 3.7 开始支持)而不是 Scala。

非常感谢您的帮助,不胜感激。 似乎是菜鸟的错误.. 这实际上是个好主意,我正在研究如何做到这一点。