加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – sbt在子项目中跳过测试,除非在该项目中运行?

发布时间:2020-12-16 10:02:15 所属栏目:安全 来源:网络整理
导读:我有一个包含多个子项目的SBT项目.其中一个子项目有我不想运行的测试,除非我明确地执行类似“; project xyz; test-only”之类的操作.所以,如果我的项目结构是: 主要 主/ ABC 主/ DEF 主/ XYZ 理想情况下,在main中运行“test”将执行main,main / abc和main /
我有一个包含多个子项目的SBT项目.其中一个子项目有我不想运行的测试,除非我明确地执行类似“; project xyz; test-only”之类的操作.所以,如果我的项目结构是:

主要
主/ ABC
主/ DEF
主/ XYZ

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

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

解决方法

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

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

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

其中val myTestTask = TaskKey [Unit](“my-test-task”)和main,abc和deff是对Projects的引用.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读