Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同一播放项目中的Gatling负载测试和ScalateTest单元测试_Scala_Unit Testing_Playframework 2.0_Scalatest_Gatling - Fatal编程技术网

同一播放项目中的Gatling负载测试和ScalateTest单元测试

同一播放项目中的Gatling负载测试和ScalateTest单元测试,scala,unit-testing,playframework-2.0,scalatest,gatling,Scala,Unit Testing,Playframework 2.0,Scalatest,Gatling,到目前为止,我们一直在使用ScalaTestPlusPlay进行项目中的测试,但是 最近决定尝试一些加特林负载测试。我们想要3个 可以单独运行的测试组: 普通单元测试(通过“测试”) 集成测试(通过“it:测试”) 负载测试(通过“gatling it:测试”) 不幸的是,我只能得到第1组和第2组或第2组和第3组 在任何给定的时间都可用。如果未启用Gatling插件,则该装置 可以执行测试和集成测试 但如果我加上: enablePlugins(GatlingPlugin) 为了build.sb

到目前为止,我们一直在使用ScalaTestPlusPlay进行项目中的测试,但是 最近决定尝试一些加特林负载测试。我们想要3个 可以单独运行的测试组:

  • 普通单元测试(通过“测试”)
  • 集成测试(通过“it:测试”)
  • 负载测试(通过“gatling it:测试”)
  • 不幸的是,我只能得到第1组和第2组或第2组和第3组 在任何给定的时间都可用。如果未启用Gatling插件,则该装置 可以执行测试和集成测试

    但如果我加上:

    enablePlugins(GatlingPlugin)
    
    为了build.sbt,我获得了运行Gatling负载测试的能力,但是 原始单元测试的费用。“测试”任务仍然可以执行, 但未找到/运行任何测试类

    Build.sbt

    libraryDependencies ++= Seq(
      "org.postgresql" % "postgresql" % "9.3-1100-jdbc4",
      "org.flywaydb" % "flyway-sbt" % "3.0",
      "org.dbunit" % "dbunit" % "2.5.1" % "test,it",
      "org.scalatest" %% "scalatest" % "2.2.4" % "test,it",
      "org.scalatestplus" %% "play" % "1.4.0-M3",
      "org.jdom" % "jdom" % "1.1.2"  notTransitive(),
      "org.pac4j" % "play-pac4j-scala_2.11"  % "1.5.0",
      "org.pac4j" % "pac4j-http" % "1.7.1",
      "jp.t2v" %% "play2-auth"      % "0.13.2",
      "jp.t2v" %% "play2-auth-test" % "0.13.2" % "test,it",
      "javax.jms" % "javax.jms-api" % "2.0.1",
      "org.apache.activemq" % "activemq-all" % "5.11.1",
      "io.gatling.highcharts" % "gatling-charts-highcharts" % "2.1.7" % "test",
      "io.gatling"            % "gatling-test-framework"    % "2.1.7" % "test",
      "com.typesafe.play" %% "anorm" % "2.4.0",
      jdbc,
      ws,
      cache
    )
    
    Defaults.itSettings
    
    lazy val ItTest = config("it") extend(Test)
    
    lazy val GatlingTest = config("gatling-it") extend(ItTest) 
    
    enablePlugins(GatlingPlugin)
    
    def loadTestFilter(name: String): Boolean = (name endsWith "LoadTest")
    
    def itTestFilter(name: String): Boolean = (name endsWith "IntegrationTest")
    
    def unitTestFilter(name: String): Boolean = ((name endsWith "Suite"))
    
    sourceDirectory in IntegrationTest := baseDirectory.value / "test/it"
    
    testOptions in Gatling := Seq(Tests.Filter(loadTestFilter))
    
    testOptions in ItTest := Seq(Tests.Filter(itTestFilter))
    
    testOptions in Test := Seq(Tests.Filter(unitTestFilter))
    
    lazy val root = (project in file("."))
      .enablePlugins(PlayScala)
      .configs(ItTest) settings( inConfig(ItTest)(Defaults.testTasks) : _*)
    
    // Failed attempt at isolating gatling tests
    lazy val gatling = project.in(file("."))
      .enablePlugins(GatlingPlugin)
    ))
    
    project/plugins.sbt

    resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
    
    // The Play plugin
    addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.2")  // It works from Play 2.3.2
    
    addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.0")
    
    addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "0.6.0")
    
    // Generate ctags for project. Yes, I am probably the only one who cares
    addSbtPlugin("net.ceedubs" %% "sbt-ctags" % "0.1.0")
    
    resolvers += "sonatype-releases" at "https://oss.sonatype.org/content/repositories/releases/"
    
    addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.1")
    
    // Gatling Stress Testing
    addSbtPlugin("io.gatling" % "gatling-sbt" % "2.1.7")
    
    那么,我怎样才能在不丢失所有单元的情况下访问新的Gatling测试呢
    测试?

    这里是Gatling SBT插件的维护者

    不幸的是,你不是第一个碰到这个问题的人,我正在解决这个问题。 作为一种临时解决方法,您可以通过使用
    test:test
    而不是
    test
    来恢复并运行单元测试。
    应针对Gatling 2.1.8;)进行固定

    我通常将gatling移动到一个子项目中,如build.sbt:

    lazy val gtl = Project("gtl", File("gtl")).settings(....).enablePlugins(GatlingPlugin)
    aggregate in Test := false
    
    然后通过sbt执行

    gtl/it:test or gtl/test 
    

    快速更新:这已被修复,它肯定会在2.1.8!除了能够在不使用名称空间前缀的情况下使用“test”命令外,此子项目方法还有哪些优点?@swoogles主要是不使用特定于测试的选项(如jvm运行时和冲突库)污染构建文件。是的,这是一个解决上述缺陷的方法。