2011-08-09 63 views
35

在0.10.1中,我經常使用test-only來縮小我的測試數量。如何執行僅與正則表達式匹配的測試?

sbt> test-only com.example.MySpec 

但是,我想縮小範圍,使得我只運行其名稱/描述與正則表達式匹配的測試。是否有一些語法來實現這樣的事情?

sbt> test-only .*someRexExp.* 
+1

如果沒有(我懷疑它,如果它不起作用),這應該是SBT的錯誤跟蹤器中的功能請求,而不是在這裏。 – Raphael

+1

我只能建議編輯你的項目文件,因爲它接受正則表達式。 –

回答

47

完全正則表達式不testOnly支持。但是,支持通配符。

sbt> testOnly com.example.*Spec 

只有星號*在這裏被解釋而不是句號。這將選擇以com.example.開頭並以Spec結尾的所有測試。

或者只是所有的測試Spec S:

sbt> testOnly *Spec 

testOnly和其他測試信息記錄在這裏:http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing

8

您可以通過他們的名字(代替或補充案件匹配測試套件類名稱)通過使用framework-specific runner arguments。 ScalaTest supports a substring match-z說法:

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

這與運行「插入」在他們的名字,那麼只有在TreeSpec結束的套房內匹配的情況下,你會直覺的所有測試。您還可以分別使用-n TagName-l TagName來包含或排除ScalaTest標記支持中的標記,並使用-t來匹配確切的測試名稱。

Specs2 supports full Java regular expressions-ex說法:

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

-include-exclude支持SPEC2的標籤功能。

查看內嵌鏈接,獲取跑步者支持的參數的完整列表。這些似乎只適用於testOnly sbt命令而不是test

+1

另外值得一提的是,如果你想要這個,而不需要先輸入sbt,你必須在sbt:'sbt「testOnly - -z insert」 –