I want to create few specifications that interoperate with database.
class DocumentSpec extends mutable.Specification with BeforeAfterExample {
sequential
d
I suppose you are using SBT? If so, check the documentation: http://www.scala-sbt.org/release/docs/Detailed-Topics/Parallel-Execution
The relevant SBT setting is parallelExecution
. Add this to your project definition:
parallelExecution in Test := false
If you want to run single Specification in specs2 sequentially just add sequential
method call at the beginning of your Specification. For example:
class MyTest extends Specification {
// Set sequential execution
sequential
// This tests will be executed sequentially
"my test" should {
"add numbers" in {
(1 + 1) should be equalTo 2
}
"multiply numbers" in {
(2 * 2) should be equalTo 4
}
}
}
UPDATE: As @jsears correctly mentioned in the comments, this will make tests to run sequentially in a single spec! Other specs may still run in parallel.
Meanwhile there is a better solution (http://www.scala-sbt.org/release/docs/Parallel-Execution.html):
sbt 0.12.0 introduces a general infrastructure for restricting task concurrency beyond the usual ordering declarations.
This configuration will run all tests sequential, also if they are in subprojects:
concurrentRestrictions in Global := Seq(
Tags.limit(Tags.CPU, 2),
Tags.limit(Tags.Network, 10),
Tags.limit(Tags.Test, 1),
Tags.limitAll( 15 )
)
I haven't tested if this can be overridden by each sub-project, so the sub-project can run its tests in parallel.