2014-12-04 16 views
1

已經test task定義如下管道日誌信息和測試任務

lazy val UnitTest = config("unit").extend(Test) 

Project("my-project", file(".")) 

testOptions in UnitTest := Seq(
    Tests.Argument("-h", "target/test-html"), 
    Tests.Argument("-u", "target/test-xml"), 
    Tests.Argument("-C", "SlowestTestReporter"), 
    Tests.Argument("-oD"), 
    Tests.Filter(testName => !testName.endsWith("Prop") && !testName.contains("Integration")) 
) 

有人請解釋一下我爲什麼測試任務覆蓋打印測試輸出在第一位,也是唯一消息後"=== Unit Tests ==="

test in Test := { 
    streams.value.log("=== Unit Tests ===") 
    (test in UnitTest).value 
} 

而且如果我重新定義測試如下,那麼一切按預期工作

test in Test := (test in UnitTest).dependsOn(unitTestsWelcome).value 

回答

2

.value定義了一個依賴關係。所有的依賴關係都是在你的任務之前計算的,而不是內聯的。如果您希望依賴任務的順序語義,請參見sbt-sequential。

1

請參閱Execution semantics of tasks

與普通的Scala方法調用不同,調用value方法的任務不會被嚴格評估。相反,他們僅充當佔位符,表示sampleIntTask取決於startServerstopServer任務。