首页 > 解决方案 > 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

标签: gradlemicronaut

解决方案


我注意到在声明测试依赖项时,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。希望这可以帮助


推荐阅读