【问题标题】:Groovy Spock with a java test class带有 java 测试类的 Groovy Spock
【发布时间】:2016-07-13 01:22:14
【问题描述】:

我是 Spock 框架的新手,在使用抽象 java 测试类时遇到了问题。

我想要的是一个 groovy 测试类,它用一些常用方法扩展了其他一些 java 抽象类,而后者又扩展了 Specification 类。

所以,代码如下:

class GroovyTest extends AbstractTest {
    def "my test"() {
        ....
    }
}

public abstract class AbstractTest extends Specification {
    ...
    some common methods
    ...
}

当我运行 GroovyTest 类时,出现以下错误:

org.spockframework.runtime.InvalidSpecException:规范“org.my.package.AbstractTest”未正确编译(Spock AST 转换未运行);尝试做一个干净的构建

当我使用 groovy 抽象类时,它可以正常工作。

所以我的问题是有没有办法将 Java 类与 Spock 框架一起使用?

【问题讨论】:

  • 你为什么要这样做?通过建造这种通天塔,你不会得到我能想到的任何好处,所以我很想了解你要解决的问题
  • 我只有一个带有通用方法的抽象 java 类,用于不同的 java 测试。现在我正在尝试添加用 Groovy 编写的新测试,但我还需要这个类的功能。这就是我不希望它变成一个 groovy 类的原因。
  • 你想如何重用这个抽象的Java类?您想从 Spock 规范扩展 Java 测试吗?
  • 我只是想知道通过 Java 测试类扩展 Spock 规范的可能性,特别是编译器没有禁止它。

标签: java groovy spock


【解决方案1】:

Spock 是一种基于 DSL Groovy 的测试语言。它在测试执行之前执行转换 (AST) 到规范的 Groovy 代码。在您的情况下,您尝试编写基于 Java 的 Spock 测试。 Spock 无法从规范的 Java 代码执行 AST 转换并抛出 IvalidSpecException。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2014-02-21
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多