使用grails 2.4,例如,当您创建控制器时,它会创建一个单元测试类,例如:
@TestFor(SessionService)
class SessionServiceSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
}
}
Run Code Online (Sandbox Code Playgroud)
所以你创建了20个控制器,并获得了20个测试类.
当您尝试运行grails test-app时,它会失败,并显示以下错误:
java.lang.Exception:
No tests found matching grails test target pattern filter from org.junit.runner.Request
Run Code Online (Sandbox Code Playgroud)
它永远不会运行我们的集成测试.
因此,Grails为您创建的测试无法开箱即用.
我们可以删除所有创建的测试规范类,但是如果我们想要编写它们,那么我们希望它们准备就绪.
遗憾的是,Grails没有告诉你哪个测试或类会抛出这个异常.
这看起来像是一个奇怪的争论.创建控制器时,默认情况下会根据模板为其创建单位规格,该模板可根据您的需要轻松定制.
为你做到了.现在回答你的问题:
是的,有一种方法只能运行集成测试.
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
}
}
Run Code Online (Sandbox Code Playgroud)
这在跑步时不会失败,但它会破坏整个目的
写失败测试 - >修改代码 - >修复测试方法
TDD.我宁愿实现一个失败的测试,然后在控制器中编写最小的逻辑来通过测试.