2016-05-12 82 views
0

我有一個多模塊項目一個測試套件,並通過讀取任務包裝過程中當前運行的測試 -運行從build.sbt

val testALL = taskKey[Unit]("Test ALL Modules") 

testALL := { 
    (test in Test in module_A).value 
    (test in Test in module_B).value 
    (test in Test in module_C).value 
} 

現在,我已經整合的每個模塊中的所有測試成單個頂級ScalaTest套件。所以每個模塊只需要運行這個單一的頂級套件(名爲「blah.moduleA.TestSuite」等)。一直試圖在我的build.sbt中使用testOnly和testFilter來在每個模塊中運行這個單獨的套件,但無法獲得正確的語法。有人可以告訴我如何做到這一點?

回答

1

testOnlyInputKey[Unit]。你想把它變成Task[Unit],以便能夠直接運行給定的測試套件。

你可以做到這一點是這樣的:

lazy val foo = taskKey[Unit]("...") 
foo := (testOnly in Test).fullInput("hello").value 

在SBT的文檔:Preapplying input in sbt

+0

感謝您的回覆,我明白瞭如何使用InputKey。但由於某種原因,我還不明白,fullInput沒有工作。並試圖找到爲什麼我發現[這](http://stackoverflow.com/questions/35863430/custom-sbt-task-to-run-tests-by-tag)SO問題,其中建議使用toTask()和那個完美地工作! – Bharadwaj