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

时间:2015-01-08 17:36:09

标签: grails testing

使用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为您创建的测试不是开箱即用的。

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

  1. 有没有办法运行我们的集成测试,而无需运行单元测试(已损坏)或:
  2. 有没有办法解决这个问题,所以他们不会摔倒?有人发布时添加了有效的,但我们不知道该放什么,因为我们尝试的仍会产生相同的例外。
  3. 遗憾的是,Grails并没有告诉你哪些测试或类会抛出此异常。

1 个答案:

答案 0 :(得分:5)

这对我来说似乎是一个奇怪的论点。创建控制器时,默认情况下会根据模板为其创建单位规格,该模板可根据您的需要轻松定制。

grails install-templates

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

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

    grails test-app integration:

  2. 使用install-templates修改Controller.groovy下的src\templates\testing模板

  3. 像:

    @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的

    我宁愿实现一个失败的测试,然后在控制器中编写最小的逻辑来通过测试。