gpt4 book ai didi

java - 使用 Maven 运行 spock 单元测试

转载 作者:IT老高 更新时间:2023-10-28 20:50:25 71 4
gpt4 key购买 nike

在之前的项目中,我使用 Spock 测试框架对我的 Java 代码进行单元测试。我发现这非常有成效,所以我尝试将 Spock 测试添加到我当前使用 Maven 作为构建工具的项目中(之前的项目使用 Gradle)。虽然我可以让 Maven 编译我的 Spock 测试(使用 groovy-eclipse-compiler),但我无法让 Maven 运行测试。

我做了一个简单的例子来演示我的问题与 2 个文件:

  • pom.xml
  • src/test/java/ASpec.groovy

pom.xml的内容:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.group</groupId>
<artifactId>my-artifact</artifactId>
<version>0.1-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.0.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>0.7-groovy-2.0</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.8.0-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.1.8-01</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>

ASpec.groovy的内容:

import spock.lang.Specification

class ASpec extends Specification {

def "Test A"(){
// Always fail
expect: false
}
}

当我执行 mvn clean test(或 mvn clean install)时,我希望我的单个单元测试能够运行并失败。编译时,Maven 不会运行它。 有谁知道如何从 Maven 运行 Spock 单元测试(或者如果可能的话?)

(我没有将我的测试放在一个包中以保持示例的简单性。此外,我已将我的 groovy 代码放在 src/test/java 中,以避免将示例配置为从其他目录中获取源文件,再次保持示例尽可能简单。)

最佳答案

此答案纯粹是对@PeterNiederwieser 答案的补充。他在其中提到您可以配置 Surefire 使用的名称模式。以下是对我有用的示例:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<configuration>
<includes>
<!-- By default only files ending in 'Test' will be included, so also include support for Spock style naming convention -->
<!-- Oddly enough for Groovy files, *Spec.groovy does not work, but *Spec.java does -->
<include>**/*Test.java</include>
<include>**/*Spec.java</include>
</includes>
</configuration>
</plugin>

Source

正如我在评论中提到的,我不确定为什么 **/*Spec.groovy 不起作用,但我很高兴能够在这里使用正常的 Spock 约定.

关于java - 使用 Maven 运行 spock 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186004/

71 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com