答案 0 :(得分:0)
这些帖子有点过时了,虽然我不能接受已接受的答案,但其他一些答案仍然可行。自2012年以来,Play和specs2已经有了一些相对重大的变化,所以我将提供一个我知道今天会工作的例子(我每天都会使用)。
我做了两件事,以便更容易隔离测试。首先,我将所有测试类命名为。包test.integration
下的集成测试和test.unit
下的单元测试。我实际上超出了这个范围,例如:test.unit.models
,test.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.UserSpec
和test.unit.models.UserCountrySpec
,test-only test.unit.models.User*
将同时运行。