【问题标题】:How to execute tests that match a regular expression only?如何执行仅匹配正则表达式的测试?
【发布时间】:2011-10-23 06:53:51
【问题描述】:

在 sbt 0.10.1 中,我经常使用test-only 来缩小我的测试数量。

sbt> test-only com.example.MySpec

但是,我想缩小范围,只运行名称/描述与正则表达式匹配的测试。是否有一些语法可以实现这样的目标?

sbt> test-only .*someRexExp.*

【问题讨论】:

  • 如果没有(我怀疑,如果它不起作用),这应该是 SBT 的 bugtracker 中的功能请求,而不是这里。
  • 我只能建议编辑你的项目文件,因为它接受正则表达式。

标签: scala sbt


【解决方案1】:

testOnly 不支持完整的正则表达式。但是,支持通配符。

sbt> testOnly com.example.*Spec

只有星号 * 在这里被特别解释,而不是句点。这将选择所有以com.example. 开头并以Spec 结尾的测试。

或者只是全部测试Specs:

sbt> testOnly *Spec

testOnly 和其他测试信息记录在这里:http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing

【讨论】:

    【解决方案2】:

    您可以使用framework-specific runner arguments 按名称匹配测试用例(代替或附加套件类名称)。 ScalaTest supports a substring match-z 参数:

    > testOnly -- -z insert
    > testOnly *TreeSpec -- -z insert
    

    这会运行所有名称中带有“insert”的测试,然后只运行套件中以TreeSpec 结尾的匹配案例,正如您所直觉的那样。您还可以使用 -n TagName-l TagName 分别包含或排除 ScalaTest 标记支持中的标签,并使用 -t 匹配确切的测试名称。

    Specs2 supports full Java regular expressions 带有 -ex 参数:

    > testOnly -- -ex ".*someRexExp.*"
    

    -include-exclude 支持 Spec2 的标记功能。

    查看内联链接以获取跑步者支持的完整参数列表。这些似乎只适用于testOnly sbt 命令而不是test

    【讨论】:

    • 另外值得一提的是,如果你想要这个而不先输入 sbt,你必须在 sbt 之后正确引用 args:sbt "testOnly -- -z insert"
    • 不确定什么时候发生了变化,但出于某种原因,我现在只能使用 ex 而没有破折号。
    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多