Maven和Gradle中配置單元測試框架Spock

Maven

Maven自己不支持其餘JVM語言(例如Groovy或Scala)。要在Maven項目中使用它,須要使用第三方插件。對於Groovy而言,最好的選擇彷佛是GMavenPlus(重寫再也不維護的GMaven插件)。另外一種選擇是容許使用Groovy-Eclipse編譯器和Maven 的插件,可是它沒有使用官方的插件,groovyc而且在過去,使用Groovy 的新發行版/功能存在一些問題。java

GMavenPlus插件的示例配置以下所示:spring

<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讓它工做。app

最後必須添加依賴項:框架

<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會發出清晰的錯誤消息以示抗議:maven

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'測試

接下來必須添加依賴項:ui

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

技術類文章精選

非技術文章精選

大咖風采

相關文章
相關標籤/搜索