如何默认禁用 "Slow" 标记的 Scalatests,允许使用选项执行?
How to disable "Slow" tagged Scalatests by default, allow execution with option?
我想默认禁用某些标记为 "Slow" 的自动化测试,但允许用户使用简单的命令行启用它们的执行。我想这是一个非常常见的用例。
鉴于此测试套件:
import org.scalatest.FunSuite
import org.scalatest.tagobjects.Slow
class DemoTestSuite extends FunSuite {
test("demo test tagged as slow", Slow) {
assert(1 + 1 === 2)
}
test("demo untagged test") {
assert(1 + 1 === 2)
}
}
默认情况下,sbt test
将 运行 标记和未标记测试。
如果我将以下内容添加到我的 build.sbt 中:
testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")
然后我得到了我想要的默认行为,其中未标记测试 运行 而慢速标记测试不会 运行。
但是,当我想 运行 时,我想不出一个命令行选项来 运行 慢速测试。我做了几次搜索并尝试了几个例子。我有点惊讶,因为这似乎是一个非常常见的场景。
我有一个类似的问题:我想要 默认情况下禁用的测试 ,但是 运行 在 发布过程中 [=30] =].我通过在不同的范围内创建 custom test configuration 和设置 testOptions
来解决它。因此,根据您的情况调整此解决方案,应该遵循以下原则(在您的 build.sbt
中):
lazy val Slow = config("slow").extend(Test)
configs(Slow)
inConfig(Slow)(Defaults.testTasks)
现在默认排除慢速测试:
testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")
但在 Slow
范围内不排除它们并且 运行 仅排除它们:
testOptions in Slow -= Tests.Argument("-l", "org.scalatest.tags.Slow")
testOptions in Slow += Tests.Argument("-n", "org.scalatest.tags.Slow")
现在,当你在 sbt 中 运行 test
时,它将 运行 除了慢速测试之外的所有内容,当你 运行 slow:test
时,它将 运行 仅 慢速测试。
我想默认禁用某些标记为 "Slow" 的自动化测试,但允许用户使用简单的命令行启用它们的执行。我想这是一个非常常见的用例。
鉴于此测试套件:
import org.scalatest.FunSuite
import org.scalatest.tagobjects.Slow
class DemoTestSuite extends FunSuite {
test("demo test tagged as slow", Slow) {
assert(1 + 1 === 2)
}
test("demo untagged test") {
assert(1 + 1 === 2)
}
}
默认情况下,sbt test
将 运行 标记和未标记测试。
如果我将以下内容添加到我的 build.sbt 中:
testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")
然后我得到了我想要的默认行为,其中未标记测试 运行 而慢速标记测试不会 运行。
但是,当我想 运行 时,我想不出一个命令行选项来 运行 慢速测试。我做了几次搜索并尝试了几个例子。我有点惊讶,因为这似乎是一个非常常见的场景。
我有一个类似的问题:我想要 默认情况下禁用的测试 ,但是 运行 在 发布过程中 [=30] =].我通过在不同的范围内创建 custom test configuration 和设置 testOptions
来解决它。因此,根据您的情况调整此解决方案,应该遵循以下原则(在您的 build.sbt
中):
lazy val Slow = config("slow").extend(Test)
configs(Slow)
inConfig(Slow)(Defaults.testTasks)
现在默认排除慢速测试:
testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")
但在 Slow
范围内不排除它们并且 运行 仅排除它们:
testOptions in Slow -= Tests.Argument("-l", "org.scalatest.tags.Slow")
testOptions in Slow += Tests.Argument("-n", "org.scalatest.tags.Slow")
现在,当你在 sbt 中 运行 test
时,它将 运行 除了慢速测试之外的所有内容,当你 运行 slow:test
时,它将 运行 仅 慢速测试。