How to execute tests that match a regular expression only?
In sbt 0.10.1, I frequently use test-only
to narrow down the number of my tests.
sbt> test-only com.example.MySpec
However, I want to narrow down such that I onl开发者_如何学运维y run tests whose name/description matches a regular expression. Is there some syntax to achieve something like this?
sbt> test-only .*someRexExp.*
Full regular expressions are not supported by testOnly
. Wildcards are supported, however.
sbt> testOnly com.example.*Spec
Only the asterisk *
is interpreted specially here and not the periods. This will select all tests beginning with com.example.
and ending with Spec
.
Or just all test Spec
s:
sbt> testOnly *Spec
testOnly
and other testing information is documented here: http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing
You can match on test cases by their name (instead of or in addition to suite class names) by using framework-specific runner arguments. ScalaTest supports a substring match with the -z
argument:
> testOnly -- -z insert
> testOnly *TreeSpec -- -z insert
This runs all tests with "insert" in their name, then only the matching cases within suites ending in TreeSpec
, as you would intuit. You can also use -n TagName
and -l TagName
to include or exclude, respectively, tags from ScalaTest's tagging support, and -t
to match an exact test name.
Specs2 supports full Java regular expressions with an -ex
argument:
> testOnly -- -ex ".*someRexExp.*"
-include
and -exclude
support Spec2's tagging features.
See the inline links for full lists of arguments that the runners support. These appear to only work with the testOnly
sbt command and not test
.
精彩评论