gradle - Micronaut 从 2.0.0.M3 切换到 RC1:Gradle 不再执行任何测试
问题描述
今天我已经从 Micronaut 2.0.0.M3 切换到它的 RC1。之后,Gradle 不再重复执行测试作业。
输出运行 M3:
$ cat gradle.properties
micronautVersion=2.0.0.M3
$ ./gradlew clean build
> Configure project :
Executed by Gradle 6.5
> Task :compileJava
Note: Creating bean classes for 4 type elements
> Task :compileTestGroovy
[...]
> Task :test
[...]
BUILD SUCCESSFUL in 25s
14 actionable tasks: 14 executed
$ ls build/test-results/test/
binary
TEST-server.endpoint.ContributorControllerTest.xml
TEST-server.endpoint.PersonControllerTest.xml
使用 RC1:
$ cat gradle.properties
micronautVersion=2.0.0.RC1
$ ./gradlew clean build
> Configure project :
Executed by Gradle 6.5
> Task :compileJava
Note: Creating bean classes for 4 type elements
[...]
BUILD SUCCESSFUL in 14s
14 actionable tasks: 14 executed
$ ls build/test-results/test/
binary
$ ls -s build/test-results/test/binary/
0 output.bin
4 output.bin.idx
0 results.bin
没有创建带有测试结果的 XML 文件;二进制测试输出文件为空。
确实很奇怪。知道这里出了什么问题吗?
基督教
除了回答@saw303 的评论:
首先我又跑clean build
了:
$ cat gradle.properties
micronautVersion=2.0.0.RC1
$ ./gradlew clean build
> Configure project :
Executed by Gradle 6.5
- using Java 11.0.7
- using Groovy 2.5.11
> Task :compileJava
Note: Creating bean classes for 4 type elements
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 12s
14 actionable tasks: 14 executed
现在让我们尝试一下 task test
:
$ ./gradlew test
> Configure project :
Executed by Gradle 6.5
- using Java 11.0.7
- using Groovy 2.5.11
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 658ms
5 actionable tasks: 5 up-to-date
执行时间非常短,因此无需执行任何测试用例!
$ ls build/test-results/test/
binary
运行clean test
:
$ ./gradlew clean test
> Configure project :
Executed by Gradle 6.5
- using Java 11.0.7
- using Groovy 2.5.11
> Task :compileJava
Note: Creating bean classes for 4 type elements
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 5s
6 actionable tasks: 6 executed
结果相同,未执行测试:
$ ls build/test-results/test/
binary
解决方案
我注意到在声明测试依赖项时,2.0.M3 和 2.0.RC1 之间的 build.gradle 略有变化。
在我们的项目中,我们使用 Spock 编写测试。
在 RC1 之前,已经声明了测试依赖项,例如:
testAnnotationProcessor(platform("io.micronaut:micronaut-bom:$micronautVersion"))
testAnnotationProcessor("io.micronaut:micronaut-inject-java")
testImplementation(platform("io.micronaut:micronaut-bom:$micronautVersion"))
testImplementation("org.junit.jupiter:junit-jupiter-api")
testImplementation("io.micronaut.test:micronaut-test-junit5")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
在 RC1 中,测试依赖项声明如下:
testImplementation(platform("io.micronaut:micronaut-bom:$micronautVersion"))
testImplementation("io.micronaut:micronaut-inject-groovy")
testImplementation("org.spockframework:spock-core") {
exclude group: "org.codehaus.groovy", module: "groovy-all"
}
testImplementation("io.micronaut.test:micronaut-test-spock")
在https://micronaut.io/launch/,您可以使用最新版本的 Micronaut 并预览 build.gradle。希望这可以帮助