GRAILS 2.4.4:如何仅运行单元测试,或如何修复生成的集成测试?

Joh*_*tle 2 testing grails

使用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为您创建的测试无法开箱即用.

我们可以删除所有创建的测试规范类,但是如果我们想要编写它们,那么我们希望它们准备就绪.

  1. 有没有办法运行我们的集成测试,而不运行单元测试(已损坏)或:
  2. 有没有办法修复测试,所以他们不会摔倒?有人发布时添加了一个有效的时间,但是我们不知道该放什么,因为我们尝试的仍会生成相同的异常.

遗憾的是,Grails没有告诉你哪个测试或类会抛出这个异常.

dma*_*tro 5

这看起来像是一个奇怪的争论.创建控制器时,默认情况下会根据模板为其创建单位规格,该模板可根据您的需要轻松定制.

grails install-templates

为你做到了.现在回答你的问题:

  1. 是的,有一种方法只能运行集成测试.

    grails test-app integration:

  2. 使用后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.我宁愿实现一个失败的测试,然后在控制器中编写最小的逻辑来通过测试.

  • 那将是`install-templates` (2认同)