Spock 测试不会 运行 使用由 start.spring.io 创建的新 spring-boot 项目
Spock test won't run with a new spring-boot project created by start.spring.io
Spock 测试 运行 在 IDE 中正常,但不会在 maven 构建中执行。
重现问题
- 转到 https://start.spring.io/ 并创建一个新的 Groovy / Maven 项目,保留所有其他默认值。
- 将 spock 依赖项添加到 pom:
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.3-groovy-2.5</version>
<scope>test</scope>
</dependency>
- 在现有测试旁边添加名为 HelloSpec.groovy 的失败 spock 测试:
import spock.lang.Specification
class HelloSpec extends Specification {
def "length of Spock's and his friends' names"() {
expect:
name.size() == length
where:
name | length
"Spock" | 5
"Kirk" | 4
"Scotty" | 6
"Dave" | 911
}
}
- 将 maven surefire 插件添加到构建中,以便它知道选择 spock 测试。我知道这对于以 Spec 结尾的文件应该是自动的,但我还没有发现是这样。我也明白文件没有以 .java 结尾,它实际上是一个 .groovy 文件,随它去吧。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Spec.java</include>
</includes>
</configuration>
</plugin>
- 运行 从命令行进行 mvn clean install。你会发现你在 false greenbar 上并且 spock 测试没有 运行.
- 删除 Spring 添加到您的 spring-boot-starter-tests 依赖项的 junit-vintage-engine 的排除项
<!-- <exclusion>-->
<!-- <groupId>org.junit.vintage</groupId>-->
<!-- <artifactId>junit-vintage-engine</artifactId>-->
<!-- </exclusion>-->
- 运行 从命令行进行 mvn clean install。 Spock 测试被拾取并且 运行 并且您的构建因测试失败
而正确失败
Spock 测试 运行 在 IDE 中正常,但不会在 maven 构建中执行。
重现问题
- 转到 https://start.spring.io/ 并创建一个新的 Groovy / Maven 项目,保留所有其他默认值。
- 将 spock 依赖项添加到 pom:
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.3-groovy-2.5</version>
<scope>test</scope>
</dependency>
- 在现有测试旁边添加名为 HelloSpec.groovy 的失败 spock 测试:
import spock.lang.Specification
class HelloSpec extends Specification {
def "length of Spock's and his friends' names"() {
expect:
name.size() == length
where:
name | length
"Spock" | 5
"Kirk" | 4
"Scotty" | 6
"Dave" | 911
}
}
- 将 maven surefire 插件添加到构建中,以便它知道选择 spock 测试。我知道这对于以 Spec 结尾的文件应该是自动的,但我还没有发现是这样。我也明白文件没有以 .java 结尾,它实际上是一个 .groovy 文件,随它去吧。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Spec.java</include>
</includes>
</configuration>
</plugin>
- 运行 从命令行进行 mvn clean install。你会发现你在 false greenbar 上并且 spock 测试没有 运行.
- 删除 Spring 添加到您的 spring-boot-starter-tests 依赖项的 junit-vintage-engine 的排除项
<!-- <exclusion>-->
<!-- <groupId>org.junit.vintage</groupId>-->
<!-- <artifactId>junit-vintage-engine</artifactId>-->
<!-- </exclusion>-->
- 运行 从命令行进行 mvn clean install。 Spock 测试被拾取并且 运行 并且您的构建因测试失败 而正确失败