Есть ли способ связать два произвольных теста spec2 (в Scala)?

Время от времени я сталкиваюсь с ситуацией, когда мне нужно быть абсолютно уверенным, что один тест выполняется (успешно) раньше другого.

Например:

"The SecurityManager" should {
    "make sure an administrative user exists" in new WithApplication with GPAuthenticationTestUtility {
        checkPrerequisiteAccounts(prerequisiteAccounts)
    }

    "get an account id from a token" in new WithApplication with GPAuthenticationTestUtility {
        val token = authenticate(prerequisiteAccounts.head)

        token.isSuccess must beTrue

        myId = GPSecurityController.getAccountId(token.get)

        myId != None must beTrue
        myId.get.toInt > 0 must beTrue
    }

Первый тест создаст пользователя-администратора, если он не существует. Второй тест использует эту учетную запись для выполнения теста.

Я знаю, что могу провести лечение до/после в spec2 (хотя я никогда этого не делал). Но я действительно не хочу, чтобы checkPrerequisiteAccounts запускался перед каждым тестом, непосредственно перед выполнением первого теста... что-то вроде "прежде чем вы начнете что-либо делать, сделайте вот это..."

Кто-нибудь знает, есть ли способ пометить конкретный тест как «сделать первым» или «сделать прежде всего?»


person Zac    schedule 22.05.2015    source источник


Ответы (2)


Вы можете просто добавить «Шаг» между тестами, чтобы обеспечить некоторую последовательность:

"make sure an administrative user exists" in ok

step("admin is created".pp)

"get an account id from a token" in ok
person Eric    schedule 22.05.2015
comment
Идеальный! Спасибо... для чего нужен .pp (пытался найти ссылку, но не смог...) - person Zac; 22.05.2015
comment
.pp — это просто синтаксический трюк: etorreborre.github .io/specs2/guide/SPECS2-3.6/ - person Eric; 22.05.2015

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

class MySpec extends mutable.Specification {
  sequential

  // rest follows
  behaviour one 
  behaviour two 
}
person Biswanath    schedule 22.05.2015