专栏首页FunTesterMaven和Gradle中配置单元测试框架Spock

Maven和Gradle中配置单元测试框架Spock

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 classorg.spockframework.compiler.SpockTransform specified atjar:file:/home/foo/.../spock-core-1.0-groovy-2.3.jar!/META-INF/services/org.codehaus.groovy.transform.ASTTransformationbecause of exceptionorg.spockframework.util.IncompatibleGroovyVersionException:The Spock compiler plugin cannot execute because Spock 1.0.0-groovy-2.3 isnot 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测试的项目。

Maven & Gradle

本文分享自微信公众号 - FunTester(NuclearTester),作者:八音弦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 单元测试框架spock和Mockito应用

    spock是一款基于Groovy语言的单元测试框架,其基础也是Java的Junit,目前最新版已经到了2.0,但对Groovy和响应的Java版本要求较高,具体...

    八音弦
  • 愉快地使用Groovy Shell

    这是一篇有关Groovy Shell的帖子,以及它如何在日常工作中为您提供帮助(只要您是软件开发人员)。无论您使用哪种编程语言或技术,都可以从Groovy Sh...

    八音弦
  • 混合Java函数和Groovy闭包

    之前分享过Groovy中的闭包,在我日常的工作中,就会想到一个问题:“如何在Groovy中使用Java方法?”

    八音弦
  • 一文学会Vue中间件管道[每日前端夜话0x8C]

    通常,在构建SPA时,需要保护某些路由。例如假设有一个只允许经过身份验证的用户访问的 dashboard 路由,我们可以通过使用 auth 中间件来确保合法用户...

    疯狂的技术宅
  • Spring核心——Stereotype组件与Bean扫描

    在注解自动装载中介绍了通过注解(Annotation)自动向Bean中注入其他Bean的方法,本篇将介绍通过注解(Annotation)向容器添加Bean的方法...

    用户1263954
  • Spring核心——Stereotype组件与Bean扫描

    在注解自动装载中介绍了通过注解(Annotation)自动向Bean中注入其他Bean的方法,本篇将介绍通过注解(Annotation)向容器添加Bean的方法...

    随风溜达的向日葵
  • vuex(2)如何传值

    第四步 (将发送来的‘me’事件来处理 将vuex里的state里的good来改变值) mutations.js

    河湾欢儿
  • 7 Papers & Radios | Hinton组新型无监督方法引热议;迄今最大规模新冠临床研究

    论文 1:A Simple Framework for Contrastive Learning of Visual Representations

    机器之心
  • 微信小程序+商城信息管理系统

    a 会员管理 b 会员等级 c 收货地址管理d 会员优惠劵 e 会员收藏 f 会员足迹

    程序源代码
  • 基于家系数据的GWAS分析

    通过GWAS分析可以寻找与某一疾病或性状相关的突变位点,传统的GWAS都是基于control/case的设计,通过比较健康人群和患病人群中突变位点或者基因型频率...

    生信修炼手册

扫码关注云+社区

领取腾讯云代金券