有没有办法链接两个任意specs2测试(在Scala中)?

时间:2015-05-22 05:39:41

标签: scala specs2

我偶尔遇到一种情况,我需要确保一个测试在另一个测试之前(成功)执行。

例如:

"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
    }

第一个测试将创建admin用户(如果它不存在)。第二个测试使用该帐户进行测试。

我知道我可以在specs2中进行前/后治疗(虽然我从来没有做过)。但是我真的不希望checkPrerequisiteAccounts在每次测试之前运行,就在第一次测试执行之前......在开始做任何事情之前,先做一下,做一件事...... "

任何人都知道是否有办法将特定测试标记为"先做"或者"先做其他事情?"

2 个答案:

答案 0 :(得分:3)

您可以在测试之间添加“步骤”以强制执行某些顺序性:

"make sure an administrative user exists" in ok

step("admin is created".pp)

"get an account id from a token" in ok

答案 1 :(得分:2)

您还可以在规范中添加顺序,例如顺序执行测试。

class MySpec extends mutable.Specification {
  sequential

  // rest follows
  behaviour one 
  behaviour two 
}