scala spec2 с использованием переменных в тестах

object Test extends Specification {

  var test = 1
  println("test: " + test)
  "Tests" should {
    "A" in {
      println("test in A: " + test)
      test = 2
      1 mustEqual 1
    }
    "B" in {
      println("test in B: " + test)
      test = 3
      1 mustEqual 1
    }

  }

  println("test end: " + test)

}

и когда я запускаю тест, я получаю:

тест: 1 конец теста: 1 тест: 1 конец теста: 1 тест в B: 1 тест в A: 1

Я хотел бы использовать эту переменную, возможно ли это? Спасибо!


person FrancMo    schedule 10.05.2014    source источник


Ответы (1)


Причина странного поведения заключается в том, что spec2 запускает спецификации одновременно.

Это одна из особенностей, как вы можете прочитать здесь http://etorreborre.github.io/specs2/ (см. заголовок «Возможности»).

Вы можете запустить его последовательно, добавив вызов sequential в свою спецификацию.

object Test extends Specification {
  var test = 1

  sequential // <- this will make the examples sequentially

  println("test: " + test)
  "Tests" should {
    "A" in {
      println("test in A: " + test)
      test = 2
      1 mustEqual 1
    }
    "B" in {
      println("test in B: " + test)
      test = 3
      1 mustEqual 1
    }

  }

  println("test end: " + test)

}
person lpiepiora    schedule 10.05.2014