管道日志消息和测试任务



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依赖于startServerstopServer任务。

最新更新