代码之家  ›  专栏  ›  技术社区  ›  fedragon

sbt程序集:跳过特定测试

  •  6
  • fedragon  · 技术社区  · 12 年前

    我想配置 sbt-assembly 跳过特定的测试类。

    有什么办法吗?如果有帮助,我使用ScalaTest标记测试 @Network 标签

    4 回复  |  直到 12 年前
        1
  •  6
  •   Eugene Yokota    12 年前

    看见 Additional test configurations with shared sources 。这允许您在 FunTest 配置,同时重用测试源。

    在你有 fun:test 使用您定义的任何过滤器 testOptions in FunTest := Seq(Tests.Filter(itFilter)) ,然后可以重新布线

    test in assembly := test in FunTest
    
        2
  •  1
  •   Mark Butler    11 年前

    尤金是对的(显然),但这对我来说还不足以让它发挥作用——我有一个 build.scala 文件我正在定义 baseSettings 这样地:

         val baseSettings = Defaults.defaultSettings ++ 
                            buildSettings ++  
                            Seq(sbt.Keys.test in assembly := {})
    
        3
  •  0
  •   laughedelic    12 年前

    您可以使用 ignore ,则sbt/ScalaTest不会运行它们。请参阅上的ScalaTest文档 Tagging tests .

    为了完整起见,如果您想跳过汇编任务中的所有测试或只运行特定的测试,您可以使用 test in assembly := { ... }

        4
  •  0
  •   JR Utily    5 年前

    基于@eugeneyokata的回复,我发现了如何使用ScalaTest中的标志:

    lazy val UnitTest = config("unit") extend (Test)
    
    lazy val companyApp = (project in file("applications/"))
          .assembly("com.company.app", "app.jar")
          .configs(UnitTest)
          .settings(
            inConfig(UnitTest)(Defaults.testTasks),
            UnitTest / testOptions ++= Seq(
              Tests.Argument(
                TestFrameworks.ScalaTest,
                "-l",
                "com.company.tag.HttpIntegrationTest"
              ),
              Tests.Argument(
                TestFrameworks.ScalaTest,
                "-l",
                "com.company.tag.EsIntegrationTest"
              )
            ),
            test in assembly := (UnitTest / test).value
          )