Play Framework 2.2.1规范2:排除集成测试

时间:2014-02-26 00:02:15

标签: playframework specs2

我正在尝试在Play应用程序中仅运行单元测试。我遇到了多个帖子和链接,例如但似乎没有工作。我尝试了thisthis。在2.2.1中有什么变化吗?

1 个答案:

答案 0 :(得分:0)

这些帖子有点过时了,虽然我不能接受已接受的答案,但其他一些答案仍然可行。自2012年以来,Play和specs2已经有了一些相对重大的变化,所以我将提供一个我知道今天会工作的例子(我每天都会使用)。

我做了两件事,以便更容易隔离测试。首先,我将所有测试类命名为。包test.integration下的集成测试和test.unit下的单元测试。我实际上超出了这个范围,例如:test.unit.modelstest.unit.controllers.users等等。

然后我可以使用test-only test.unit.models.*

运行我的所有模型测试

我还发现通过我正在测试的函数的名称或其他一些有用的描述符来标记每个单独的测试用例是有帮助的。

package test.unit.models

import org.specs2.mutable._
import play.api.test._
import play.api.test.Helpers._
import models.User

object UserSpec extends Specification {

     "The user model" should {

         tag("create")
         "successfully create a new user" in new WithApplication {

               ....

         }

         ...
     }

 }

现在我可以对运行哪些测试进行更精细的控制:

 test-only test.unit.models.UserSpec -- include create

或许我想运行所有单元测试,除了标记为“create”的那些:

 test-only test.unit.* -- exclude create

外卡也可以放在完整包名中的任何位置。例如,如果您有两个模型规范:test.unit.models.UserSpectest.unit.models.UserCountrySpectest-only test.unit.models.User*将同时运行。