Maven
Maven 本身不支持其他 JVM 语言(例如 Groovy 或 Scala)。要在 Maven 项目中使用它,需要使用第三方插件。对于 Groovy 而言,最好的选择似乎是 GMavenPlus(重写不再维护的 GMaven 插件)。另一种选择是允许使用 Groovy-Eclipse 编译器和 Maven 的插件,但是它没有使用官方的插件,groovyc 并且在过去,使用 Groovy 的新发行版/功能存在一些问题。
GMavenPlus 插件的示例配置如下所示:
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
由于我们要用 Spock 编写测试,因此建议使用 Spec 附加后缀(从规范中命名)来命名文件,因此需要告诉 Surefire 在这些文件中也查找测试:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<includes>
<include>**/*Spec.java</include> <!-- Yes, .java extension -->
<include>**/*Test.java</include> <!-- Just in case of having also "normal" JUnit tests -->
</includes>
</configuration>
</plugin>
值得留意的是,我们需要包括**/*Spec.java不**/*Spec.groovy
让它工作。
最后必须添加依赖项:
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.0-groovy-2.4</version>
<scope>test</scope>
</dependency>
</dependencies>
正确使用 Spock 版本非常重要。对于 Groovy 2.4,需要版本 1.0-groovy-2.4。对于 Groovy 2.3 版本 1.0-groovy-2.3。如果发生错误,Spock 会发出清晰的错误消息以示抗议:
Could not instantiate global transform class
org.spockframework.compiler.SpockTransform specified at
jar:file:/home/foo/.../spock-core-1.0-groovy-2.3.jar!/META-INF/services/org.codehaus.groovy.transform.ASTTransformation
because of exception
org.spockframework.util.IncompatibleGroovyVersionException:
The Spock compiler plugin cannot execute because Spock 1.0.0-groovy-2.3 is
not compatible with Groovy 2.4.0. For more information, see
http://versioninfo.spockframework.org
连同其他必需的 pom.xml 元素,文件大小增加到了 50 行以上的 XML。仅对于 Groovy 和 Spock 而言。让我们看看 Gradle 中有多么复杂。
Gradle
Gradle 具有对 Groovy 和 Scala 的内置支持。事不宜迟,Groovy 插件只需要应用即可。
apply plugin: 'groovy'
接下来必须添加依赖项:
compile 'org.codehaus.groovy:groovy-all:2.4.1'
testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
以及 Gradle 在哪里寻找他们的信息:
repositories {
mavenCentral()
}
连同定义包组和版本一起,在基于 Groovy 的 DSL 中花费了 15 行代码。
- 顺便说一句,在 Gradle 的情况下,匹配 Spock 和 Groovy 版本也很重要,例如 Groovy 2.4.1 和 Spock 1.0-groovy-2.4。
我现在的配置
我用的 Gradle
testCompile group: 'org.spockframework', name: 'spock-core', version: '1.3-groovy-2.5'
testCompile group: 'org.spockframework', name: 'spock-spring', version: '1.3-groovy-2.5'
testCompile group: 'org.springframework', name: 'spring-test', version: '5.1.9.RELEASE'
总结
得益于对 Groovy 的嵌入式支持和紧凑的 DSL Gradle,它是开始使用 Spock(通常是 Groovy)的首选解决方案。但是,如果您在 GMavenPlus(和 XML)的帮助下更喜欢 Apache Maven,也可以构建使用 Spock 测试的项目。
技术类文章精选
- java 一行代码打印心形
- Linux 性能监控软件 netdata 中文汉化版
- 接口测试代码覆盖率(jacoco)方案分享
- 性能测试框架
- 如何在 Linux 命令行界面愉快进行性能测试
- 图解 HTTP 脑图
- 将 swagger 文档自动变成测试代码
- 五行代码构建静态博客
- 基于 java 的直线型接口测试框架初探
- JUnit 中用于 Selenium 测试的中实践