【发布时间】:2017-05-04 21:50:08
【问题描述】:
我想默认禁用某些标记为“慢”的自动化测试,但允许用户使用简单的命令行启用它们的执行。我想这是一个非常常见的用例。
鉴于此测试套件:
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")
然后我得到了我想要的默认行为,即运行未标记的测试,而慢速标记的测试将不会运行。
但是,当我想运行慢速测试时,我想不出一个命令行选项。我已经进行了几次搜索并尝试了几个示例。我有点惊讶,因为这似乎是一种非常常见的情况。
【问题讨论】:
-
你检查this article了吗?
-
@evan058,是的,这有效,但它保留了运行所有内容的默认行为。我希望默认排除慢速测试。
-
你试过
testOnly org.myorg.* -- -n org.scalatest.tags.Slow吗?来自this page,“使用标签包含和排除测试”部分。
标签: scala unit-testing sbt scalatest