可选择在 SBT 中使用自定义配置运行测试

Posted

技术标签:

【中文标题】可选择在 SBT 中使用自定义配置运行测试【英文标题】:Optionally running tests in SBT with a custom configuration 【发布时间】:2021-09-30 01:47:12 【问题描述】:

我正在尝试配置我的测试,以便默认情况下不运行其中的一部分,但可以有选择地运行。我在网上找到的这个问题的解决方案建议标记测试子集并在build.sbt 的项目定义中创建自定义配置。

这就是我所拥有的:

  val node = project
    .in(file("node/instance"))
    .dependsOn(...)
    .settings(commonSettings("node"): _*)
    .settings(
      (soliditySources in Compile) ++= Seq(
        baseDirectory.value / "src" / "evmTest" / "resources" / "solidity",
        baseDirectory.value / "src" / "test" / "resources" / "solidity",
        baseDirectory.value / "src" / "precompiledContracts" / "resources" / "solidity"
      )
    )

  val Integration = config("it") extend Test
  scalastyleSources in Test ++=  (unmanagedSourceDirectories in Integration).value 
  val Benchmarks = config("benchmarks") extend Test

  Test / testOptions += Tests.Argument("-l", "iele")
  val Iele = config("iele") extend Test
  Iele / testOptions -= Tests.Argument("-l", "iele")
  Iele / testOptions += Tests.Argument("-n", "iele")

  node
    .configs(Integration, Benchmarks, EvmTest, PrecompiledContracts, Iele)
    .settings(
      inConfig(Integration)(
        Defaults.testSettings ++ BloopDefaults.configSettings ++ Seq(parallelExecution in Test := false)
      ): _*
    )
    .settings(inConfig(Benchmarks)(Defaults.testSettings ++ BloopDefaults.configSettings): _*)
    .settings(inConfig(Iele)(Defaults.testSettings ++ BloopDefaults.configSettings): _*)

我的标签是:

object Iele extends Tag("iele")

问题是当我在 sbt shell 中运行 iele:test 时,命令立即返回成功并且没有运行任何测试。我怀疑这是因为测试源文件没有放在专用的iele 文件夹中,但我不想这样做。我正在运行 sbt 版本1.4.9

【问题讨论】:

【参考方案1】:

您不需要单独的 sbt 配置来运行标记测试。

https://www.scalatest.org/user_guide/using_scalatest_with_sbt

你可能想做testOnly -- -n iele之类的事情

【讨论】:

我希望testtestOnly 默认排除测试,并且我想添加一个只执行测试的命令。 testOnly -- -n iele 有效,但默认情况下它不能帮助我排除测试。

以上是关于可选择在 SBT 中使用自定义配置运行测试的主要内容,如果未能解决你的问题,请参考以下文章

无法从 AutoPlugin 的命令运行自定义 sbt 任务

Scala SBT - sbt-native-packager,如何指定自定义阶段目录

你如何在 sbt 中编写任务?

如何在 Intellij Idea 中使用自定义 sbt 版本?

使用自定义 sbt 插件

sbt-web-plugin:使用 configurationXml 指定码头的类路径