gpt4 book ai didi

scala - SBT:如何获取 IntegrationTest 中的所有定义?

转载 作者:行者123 更新时间:2023-12-04 10:14:09 25 4
gpt4 key购买 nike

很容易得到TestDefinition的所有实例在 IntegrationTest :
val tests: Seq[TestDefinition] = (definedTests in IntegrationTest).value
但是我如何获得 xsbti.api.Definition 的所有实例在 IntegrationTest ?过去可以这样做:

val defs: Seq[Definition] = {
val analysis = (compile in IntegrationTest).value
analysis.apis.internal.values.flatMap(_.source.api.definitions)
}

(例如,对于基于套件注释的过滤测试:例如, @RequiresCassandra@RequiresCluster 等)。但是 analysis.apis已被删除——不确定何时,但它在 SBT 1.3.8 中不存在。我还没有找到任何关于使用什么的文档。

与 Maven 等基于 XML 的工具相比,SBT 的主要优势之一是能够以编程方式定义build设置。应该可以根据测试代码本身中的任何内容过滤测试,而不仅仅是测试名称。我无法相信如此有用的东西——真正将 SBT 置于竞争对手之上的东西——可以被删除。

有什么建议?

最佳答案

Tests.allDefs 返回 Definition s 给定 CompileAnalysis .例如,

val analysis: CompileAnalysis = (compile in IntegrationTest).value
val definitions: Seq[Definition] = Tests.allDefs(analysis)
val annotations: Seq[Annotation] = definitions.flatMap(_.annotations())

有一个 change早在 2016 年
val compile = TaskKey[Analysis]("compile", "Compiles sources.", APlusTask)


val compile = TaskKey[CompileAnalysis]("compile", "Compiles sources.", APlusTask)

在哪里
trait Analysis extends CompileAnalysis {
...
val apis: APIs
...
}

所以现在我们必须转换到 Analysis
analysis match { case analysis: Analysis => ... }

这是什么 allDefs做。

关于scala - SBT:如何获取 IntegrationTest 中的所有定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61165739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com