我有一个多项目构建,在子项目和父项目中都有测试。聚合构建,以便父项目在子项目中运行所有测试。
我对它进行了配置,以便在子项目和父项目中没有并行执行测试,通过
parallelExecution in Test := false
然而,我有一种唠叨的感觉,跨越多个项目的测试是并行运行的。对于其中一个子项目,这是一个问题,因为它会同时改变测试数据库中的状态,导致测试失败。
关于如何在项目之间全局切换测试并行执行的任何想法?
答案 0 :(得分:29)
我认为您可以使用范围ThisBuild
跨项目应用设置,例如
parallelExecution in ThisBuild := false
我不知道您是否可以将其与范围Test
结合使用,但可能没有必要。
答案 1 :(得分:16)
答案 2 :(得分:4)
请在此处查看我的回答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
答案 3 :(得分:3)
这在1.1.0中对我有用:
Test / parallelExecution := false
答案 4 :(得分:1)
基于https://stackoverflow.com/a/27068019/1922026的另一种可能性是在根项目中定义命令别名:
.settings(addCommandAlias("test", ";s1/test;s2/test;s3/test"): _*)
其中s1,s2和s3是子项目。当您在根项目中并运行“test”时,测试将按顺序执行,并按照定义的顺序执行。