【发布时间】:2026-01-05 14:45:02
【问题描述】:
在之前的项目中,我使用 Spock 测试框架对我的 Java 代码进行单元测试。我发现这非常有成效,所以我尝试将 Spock 测试添加到我当前使用 Maven 作为构建工具的项目中(之前的项目使用 Gradle)。虽然我可以让 Maven 编译我的 Spock 测试(使用 groovy-eclipse-compiler),但我无法让 Maven 运行测试。
我做了一个简单的例子来演示我的问题与 2 个文件:
pom.xmlsrc/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 以避免将示例配置为从其他目录中获取源文件,再次保持示例尽可能简单。)
【问题讨论】:
标签: java unit-testing maven groovy spock