2年前 (2022-10-17)  Spock系列 |   抢沙发  1470 
文章评分 1 次,平均分 5.0

有些项目虽然在Idea里执行spock单元测试时一切正常,但通过maven执行或在公司内部一些CICD系统中运行spock的单测时可能会遇到以下异常:

Spock注意事项-groovy的maven编译插件版本不兼容问题

Execution default of goal org.codehaus.gmavenplus:gmavenplus-plugin:1.6:compileTests failed

或者是这种异常:

Spock注意事项-groovy的maven编译插件版本不兼容问题

Unable to determine Groovy version

这两种错误一般都是项目中引入的 gmavenplus-plugin 插件版本和groovygroovy-all版本不一致导致的,如果说你项目中的groovy版本比较低:

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.12</version>
    <scope>test</scope>
</dependency>
<plugin>
    <groupId>org.codehaus.gmavenplus</groupId>
    <artifactId>gmavenplus-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <goals>
                <goal>compileTests</goal>
            </goals>
        </execution>
    </executions>
</plugin>

像本系列文章中示例代码使用的groovy都是2.5.4,对应的gmavenplus-plugin可以使用1.6版本的,但如果是2.4.12groovy,可能识别不到1.6的gmavenplus编译插件,需要降到 1.51.4

改成如下配置即可(注意1.5之前的<goal>名字为testCompile

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.12</version>
    <scope>test</scope>
</dependency>
<plugin>
    <groupId>org.codehaus.gmavenplus</groupId>
    <artifactId>gmavenplus-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <goals>
                <goal>testCompile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

然后记得本地执行下 mvn clean test 命令,确保单测执行成功(第一次需要这样操作下,后面就不需要)

如果你的项目中依赖的底层pom也引入了spock和groovy,不方便排除的话,也可以直接使用,只要mvn clean test能通过即可。

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2755.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册