I have the following test code:
import org.specs2.mutable.Specification
import org.specs2.specification.{BeforeExample, Before, Scope}
class TestSpec extends Specification with BeforeExample {
def before = println("before!!!!")
"Test" should {
"run before 1" in {
println("test 1")
success
}
"run before 2" in {
println("test 2")
success
}
"run before 3" in {
println("test 3")
success
}
}
}
I expect something like:
before!!!!
test 1
before!!!!
test 2
before!!!!
test 3
...
But get the output:
before!!!!
before!!!!
before!!!!
test 3
test 2
test 1Test should
run before 1
run before 2
run before 3
Why such a strange order? Tests are run in parallel mode?
In this synthetic example it does not matter. But if before
make a database cleanup or something else this execution order break testing.