0

我正在尝试对任务使用新的范围过滤 API 来执行项目的所有测试及其依赖项。

val select = ScopeFilter(inDependencies(p), inConfigurations(Test))
val agg = executeTests.all(select).map(aggregateTestOutput)
executeTests in Test := agg.value

但我得到了错误

[error] Runtime reference to undefined setting: 
[error] 
[error]   proj/test:executeTests from proj/test:executeTests

使用ScopeFilter(inDependencies(p, includeRoot=false), inConfigurations(Test)),它将从项目依赖项中运行测试。我什至尝试过只制作范围过滤器ScopeFilter(inProject(p), inConfigurations(Test)),但它失败并出现同样的错误。

我需要做什么才能完成这项工作?

4

1 回答 1

3

设置处理器中的死代码消除可能是一个问题。 all是用 实现的flatMap,所以所有的依赖关系都不是静态已知的。死代码消除错误地丢弃了默认值executeTests,因为它不是静态使用的。尝试显式引用以前的值,例如:

val select = ScopeFilter(inDependencies(p, includeRoot=false), inConfigurations(Test))
val agg = executeTests.all(select)

executeTests in Test := {
   val outs = (executeTests in Test).value +: agg.value
   aggregateTestOutput(outs)
}
于 2013-11-11T23:01:15.680 回答