gpt4 book ai didi

scala - sbt 跳过子项目中的测试,除非从该项目内运行?

转载 作者:行者123 更新时间:2023-12-02 07:38:12 25 4
gpt4 key购买 nike

我有一个包含多个子项目的 SBT 项目。其中一个子项目有一些我不想运行的测试,除非我明确执行“;project xyz ;test-only”之类的操作。所以,如果我的项目结构是:

主要主/abc主/定义主/xyz

理想情况下,在 main 中运行“test”将执行 main、main/abc 和 main/def 项目中的任何测试,但不会执行 main/xyz 项目。

我尝试在主类的构建文件中添加一个测试过滤器,排除 main/xyz 中的所有测试(按包名称),然后在 main/xyz 项目中添加一个单独的 build.sbt 文件以将它们添加回来,但这仍然会导致从顶级项目执行测试...

最佳答案

“聚合”是一项功能的名称,该功能使 test 在其他项目(称为聚合项目或“执行依赖项”)以及当前项目上执行。您可以在 Multi-Project Builds 上找到更多信息页。

我将在“主”项目中创建一个自定义任务,该任务取决于您要运行的任务。例如,

myTestTask <<= Seq(
test in (main, Test),
test in (abc, Test),
test in (deff, Test)
).dependOn

其中 val myTestTask = TaskKey[Unit]("my-test-task")main、abc 和 deff 是对您的项目的引用。

聚合仅应用于命令行上指定的顶级任务。因此,如果您调用 my-test-task,这将是唯一聚合的任务(在这种情况下,它不会在任何子项目上定义,因此不会通过聚合添加任何任务)。特别是,它的依赖项,即显式列出的 test 任务,不会被聚合。结果是,当您调用 my-test-task 时,test in xyz 不会被执行。

最后,请注意,您可以说 xyz/test-onlyxyz 项目运行 test-only,而无需更改为该项目.

关于scala - sbt 跳过子项目中的测试,除非从该项目内运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856204/

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