Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to turn off parallel execution of tests for multi-project builds?

Tags:

scala

sbt

I have a multi-project build with tests in sub-projects and in a parent project. The build is aggregated so that the parent project runs all tests in child projects.

I configured it so that there's no parallel execution of tests in both the sub-projects and the parent project, via

parallelExecution in Test := false 

However, I have the nagging feeling that tests that span over multiple projects are ran in parallel. In the case of one of the sub-projects this is a problem because it mutates state in a test database concurrently, leading to the test to fail.

Any ideas as to how to globally switch of parallel execution of tests, between projects?

like image 870
Manuel Bernhardt Avatar asked Aug 10 '12 10:08

Manuel Bernhardt


People also ask

What is parallel execution in testing?

In parallel testing, we test different modules or applications on multiple browsers in parallel rather than one by one. The parallel test execution is different from sequential testing, where we test different modules or functionalities one after the other.

Why is parallel testing recommended?

Parallel testing can save your team from delays in delivery without compromising the quality, which makes it superior to sequential testing. With parallelization, you can cut your QA expenses, run cases at high concurrency, optimize your CI/CD processes and constantly improve your scripts to get more accurate results.

Can we run tests in parallel?

You can parallel test at scale by integrating test automation frameworks with a cloud-based solution, which takes care of device management. The opposite of parallel testing is sequential testing.


2 Answers

I think you can apply a setting across projects using scope ThisBuild, like

parallelExecution in ThisBuild := false 

I don't know if you can combine that with scope Test, but it might not be necessary.

like image 170
0__ Avatar answered Sep 28 '22 05:09

0__


To restrict the number of concurrently executing tests in all projects, use:

concurrentRestrictions in Global += Tags.limit(Tags.Test, 1) 

See sbt documentation

See discussion

like image 32
lisak Avatar answered Sep 28 '22 06:09

lisak