如何只执行与正则表达式匹配的测试?

tob*_*bym 38 scala sbt

在sbt 0.10.1中,我经常test-only用来缩小测试次数.

sbt> test-only com.example.MySpec
Run Code Online (Sandbox Code Playgroud)

但是,我想缩小范围,以便我只运行名称/描述与正则表达式匹配的测试.有没有一些语法来实现这样的东西?

sbt> test-only .*someRexExp.*
Run Code Online (Sandbox Code Playgroud)

Mar*_*rah 50

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

sbt> testOnly com.example.*Spec
Run Code Online (Sandbox Code Playgroud)

*此处仅特别解释星号,而不是句点.这将选择所有以开头com.example.和结尾的测试Spec.

或者只是所有测试Spec:

sbt> testOnly *Spec
Run Code Online (Sandbox Code Playgroud)

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


che*_*hes 12

您可以匹配测试情况下通过其名称(而不是或除了套件类名)通过使用特定的框架亚军参数.ScalaTest 支持-z参数匹配的子字符串:

> testOnly -- -z insert
> testOnly *TreeSpec -- -z insert
Run Code Online (Sandbox Code Playgroud)

这将在其名称中以"insert"运行所有测试,然后仅在套件内以匹配的情况结束TreeSpec,就像你想要的那样.您还可以使用-n TagName-l TagName分别包含或排除ScalaTest标记支持中的标记,并-t匹配精确的测试名称.

Specs2 支持带有-ex参数的完整Java正则表达式:

> testOnly -- -ex ".*someRexExp.*"
Run Code Online (Sandbox Code Playgroud)

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

有关运行者支持的参数的完整列表,请参阅内联链接.这些似乎只适用于testOnlysbt命令而不是test.

  • 值得一提的是,如果你想在不首先输入sbt的情况下这样做,你必须在sbt之后正确引用args:`sbt"testOnly - -z insert"` (2认同)