将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
答案 0 :(得分:2)
.value定义了一个依赖项。所有依赖项都在您的任务之前计算,而不是内联。如果您喜欢关于任务依赖性的顺序语义,请参阅sbt-sequential。
答案 1 :(得分:1)
请参阅Execution semantics of tasks。
与普通的Scala方法调用不同,不会严格评估对任务调用
value
方法。相反,它们只是作为占位符来表示sampleIntTask
取决于startServer
和stopServer
任务。