使用grails 2.4,例如,当您创建控制器时,它会创建一个单元测试类,例如:
@TestFor(SessionService)
class SessionServiceSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
}
}
所以你创建了20个控制器,并获得了20个测试类。
当您尝试运行grails test-app时,它会失败,并显示以下错误:
java.lang.Exception:
No tests found matching grails test target pattern filter from org.junit.runner.Request
它永远不会运行我们的集成测试。
Grails为您创建的测试不是开箱即用的。
我们可以删除所有创建的测试规范类,但是如果我们想要编写它们,那么我们希望它们准备就绪。
遗憾的是,Grails并没有告诉你哪些测试或类会抛出此异常。
答案 0 :(得分:5)
这对我来说似乎是一个奇怪的论点。创建控制器时,默认情况下会根据模板为其创建单位规格,该模板可根据您的需要轻松定制。
为你做到了。现在回答你的问题:
是的,只有一种方法可以运行集成测试。
grails test-app integration:
使用install-templates
修改Controller.groovy
下的src\templates\testing
模板
像:
@artifact.package@import grails.test.mixin.TestFor
import spock.lang.Specification
/**
* See the API for {@link grails.test.mixin.web.ControllerUnitTestMixin}
* for usage instructions
*/
@TestFor(@artifact.testclass@)
class @artifact.name@ extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
expect:
1 == 1
}
}
这不会使你的测试在运行时失败,但它会破坏
的全部目的TDD的撰写失败的测试 - >修改代码 - >修复测试方法
我宁愿实现一个失败的测试,然后在控制器中编写最小的逻辑来通过测试。