我有一个多项目构建测试在子项目和父项目。构建被汇总,以便父项目运行子项目中的所有测试。如何关闭多项目构建测试的并行执行?
我配置它,以便有在这两个子项目和父项目的测试并行执行,通过
parallelExecution in Test := false
不过,我也有挥之不去的感觉,是跨越多个项目的测试跑在平行下。在其中一个子项目的情况下,这是一个问题,因为它同时在测试数据库中改变状态,导致测试失败。
任何想法,如何在全球范围内的测试并行执行的开关,项目之间?
我有一个多项目构建测试在子项目和父项目。构建被汇总,以便父项目运行子项目中的所有测试。如何关闭多项目构建测试的并行执行?
我配置它,以便有在这两个子项目和父项目的测试并行执行,通过
parallelExecution in Test := false
不过,我也有挥之不去的感觉,是跨越多个项目的测试跑在平行下。在其中一个子项目的情况下,这是一个问题,因为它同时在测试数据库中改变状态,导致测试失败。
任何想法,如何在全球范围内的测试并行执行的开关,项目之间?
我想你可以申请跨应用范围ThisBuild
项目的设置,像
parallelExecution in ThisBuild := false
我不知道你是否能结合起来,与范围Test
,但它可能没有必要。
看到这里How to run subprojects tests (including setup methods) sequentially when testing
我的回答还有另一种方法,以防止并行执行。您可以进行不同项目的测试任务是互相依赖的:
test in Project2 := (test in Project2).dependsOn(test in Project1).value
parallelExecution in Test in Project2 := false
这对我不起作用:我得到'参考未定义的设置:Project2/*:从Project2/*测试:test(/Users/the21st/Work/Project2/build.sbt:36)您的意思是Project2/web-assets-test:test?' – the21st 2015-07-21 09:34:41
要限制的同时执行测试在所有项目中,使用的数量:
concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)
另一种可能性,是根据https://stackoverflow.com/a/27068019/1922026,是根项目定义一个命令别名:
.settings(addCommandAlias("test", ";s1/test;s2/test;s3/test"): _*)
其中S1,S2和S3的子项目。当您在根项目中并运行“测试”时,测试将按照定义的顺序依次执行。
对不起,我还挺新斯卡拉以及所面临的同样的问题 - 我应该在哪里,就把这行?该项目的文件? – kirhgoff 2013-06-21 12:24:49
最简单的就是把它放到'build.sbt'中(即使你在'project/Build.scala'中有完整的配置文件也可以使用该文件) – 2013-06-21 12:38:52
谢谢!我自己想到了,太急于问而不是思考:)。无论如何,谢谢 – kirhgoff 2013-06-21 17:51:10