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
.value 定义了依赖关系。 所有依赖项都是在任务之前计算的,而不是内联的。 如果需要任务依赖项的顺序语义,请参阅 sbt 顺序。
请参阅任务的执行语义。
与普通的 Scala 方法调用不同,对任务调用
value
方法不会被严格评估。相反,它们只是充当占位符来表示sampleIntTask
依赖于startServer
和stopServer
任务。