1

这篇文章完美地描述了我的原始问题:我想遵循 TDD:

  • 写一个小测试
  • 看它失败
  • 编写足够的代码以使其成功
  • 看它成功
  • 重复

我正在 IntelliJ 中从事 Grails 项目。如果我只想编写普通的 JUnit 测试,上面的帖子可以解决所有问题:

  • 前往 /test/unit
  • 将一些测试代码放在“class Xyz extends GroovyTestCase”类中
  • 按 Shift F10
  • JUnit 报告在一两秒内弹出

问题是我想使用一种非常酷的“英语描述”测试设置,比如 Easyb 或 Spock。

我该怎么办?从 Grails 为我创建的自动生成的测试类开始,然后将 Spock 的东西塞进其中,这将是一件神奇的事情。显然我不能两次使用“扩展”。这是否给出了我正在尝试做的事情的要点?

class Xyz extends GroovyTestCase extends spock.lang.Specification {

    //void testSomething() {
    //    fail "Implement me"
    //}

    def "length of Spock's and his friends' names"() {
        expect:
        name.size() == length

        where:
        name     | length
        "Spock"  | 5
        "Kirk"   | 4
        "Scotty" | 6
    }
}
4

2 回答 2

3

扩展 spock 类,而不是 groovy 类。您可以从源代码中列出的UnitSpec、ControllerSpec、IntegrationSpec 等中进行选择。Spock会处理剩下的事情。

于 2012-05-28T12:42:06.830 回答
1

- 使用“grails 安装模板”

-将测试模板更改为以下内容:

@artifact.package@

import grails.test.mixin.*
import org.junit.*
import spock.lang.Specification

@TestFor(@artifact.testclass@)
class @artifact.name@ extends Specification {

}

- 在 Spock 中编写测试代码(或普通的 JUnit 代码)

-IntelliJ->运行->编辑配置。添加 JUnit 类型的新配置。测试种类:<All in package/All in UnitTest directory/All in one UnitTest class/etc.>

-(快捷键:方法名或类名上的光标->ctrl-shift-F10)


关于我最初的问题:回想起来,我对那篇博客文章的“在目录中运行”部分感到困惑。当前的 IntelliJ 允许您在一个目录或整个项目中运行所有 JUnit 测试。

一旦我理解了这一点,下一步就是意识到 Spock 测试是 JUnit 测试。在 test/unit 目录中创建一个“class Xyz extends Specification {}”类,用 Spock 代码填充它,然后 Run as... JUnit。魔法!

于 2012-06-01T01:52:21.730 回答