spring-boot - Spring Boot升级到2.3.2后,Gradle找不到测试

标签 spring-boot kotlin gradle

我们最近将Kotlin Spring Boot项目升级为Spring Boot 2.3.2,从那时起,gradle似乎无法再接受任何测试。
我们使用了gradle包装器5.6.2,并升级到6.3,即使the documentation声明5.6.x也应该工作。当我降级到2.2.3时,Gradle升级没有帮助,并且gradle仍然无法接受任何测试。我们正在使用Kotest,Junit5和嵌入式mongodb进行测试。

plugins {
    val kotlinVersion = "1.3.50"
    kotlin("jvm") version kotlinVersion
    kotlin("plugin.spring") version kotlinVersion

    id("org.springframework.boot") version "2.3.2.RELEASE"
    id("io.spring.dependency-management") version "1.0.9.RELEASE"

    id("jacoco")
}

dependencyManagement {
    dependencies {
        dependency("net.logstash.logback:logstash-logback-encoder:6.1")
        dependency("com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0")

        val kotlintestVersion = "3.4.2"
        dependency("io.kotlintest:kotlintest-runner-junit5:$kotlintestVersion")
        dependency("io.kotlintest:kotlintest-extensions-spring:$kotlintestVersion")
        dependency("io.kotlintest:kotlintest-assertions:$kotlintestVersion")
    }
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

    implementation("org.springframework.boot:spring-boot-starter-data-mongodb")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    implementation("org.springframework.boot:spring-boot-starter-security")

    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")

    testImplementation("org.assertj:assertj-core")

    testImplementation("org.springframework.boot:spring-boot-starter-test") {
        exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
    }

    testImplementation("org.springframework.amqp:spring-rabbit-test")
    testImplementation("org.springframework.security:spring-security-test")

    testImplementation("com.nhaarman.mockitokotlin2:mockito-kotlin")

    testImplementation("io.kotlintest:kotlintest-runner-junit5")
    testImplementation("io.kotlintest:kotlintest-extensions-spring")
    testImplementation("io.kotlintest:kotlintest-assertions")
}

val jacocoTask = tasks.withType<JacocoReport> {
    reports {
        xml.isEnabled = true
    }
}

tasks.withType<Test> {
    doFirst {
        environment("SPRING_DATA_MONGODB_PORT", "${project.mongo.port}")
    }
    this.extra.set("runWithMongoDb", true)
    useJUnitPlatform()
    finalizedBy(jacocoTask)
}

mongo {
    setPort("RANDOM")
}
val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions {
    freeCompilerArgs = listOf("-XXLanguage:+InlineClasses")
}
关于我可能做错了什么的提示?
我们非常简单的测试之一:
@SpringBootTest
@ExperimentalUnsignedTypes
class HardwareServiceApplicationSpec : FunSpec() {

    override fun listeners(): List<TestListener> {
        return listOf(SpringListener)
    }

    @Autowired
    private lateinit var rmqMessageReceiver: RmqMessageReceiver

    init {
        test("the messageReceiver bean is created on application startup") {
            assertThat(rmqMessageReceiver).isNotNull()
        }
    }
}
测试的日志输出也对我没有太大帮助:
> Task :test
file or directory 'C:\Users\Pia Gerhofer\Projects\hw-service-v2\build\classes\java\test', not found
Excluding []
Caching disabled for task ':test' because:
  Build cache is disabled
Task ':test' is not up-to-date because:
  Task.upToDateWhen is false.
Extracting Mongo binaries...
Starting Mongod 4.0.2 on port 55319...
start de.flapdoodle.embed.mongo.config.MongodConfigBuilder$ImmutableMongodConfig@7f4e7fe1
Mongod started.

file or directory 'C:\Users\Pia Gerhofer\Projects\hw-service-v2\build\classes\java\test', not found
Starting process 'Gradle Test Executor 3'. Working directory: C:\Users\Pia Gerhofer\Projects\hw-service-v2 Command: C:\Program Files\Java\jdk-11.0.5\bin\java.exe -Dorg.gradle.native=false -javaagent:build/tmp/expandedArchives/org.jacoco.agent-0.8.5.jar_6a2df60c47de373ea127d14406367999/jacocoagent.jar=destfile=build/jacoco/test.exec,append=true,inclnolocationclasses=false,dumponexit=true,output=file,jmx=false @C:\Users\Pia Gerhofer\AppData\Local\Temp\gradle-worker-classpath2455123809837509056txt -Xmx512m -Dfile.encoding=windows-1252 -Duser.country=AT -Duser.language=de -Duser.variant -ea worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 3'
Successfully started process 'Gradle Test Executor 3'

Gradle Test Executor 3 started executing tests.

> Task :test

~~~ Project Configuration ~~~


Gradle Test Executor 3 STANDARD_OUT
    ~~~ Project Configuration ~~~
-> Parallelism: 1 thread

    -> Parallelism: 1 thread
-> Test order: LexicographicSpecExecutionOrder

    -> Test order: LexicographicSpecExecutionOrder
-> Soft assertations: False

    -> Soft assertations: False
-> Write spec failure file: False

    -> Write spec failure file: False
-> Fail on ignored tests: False

    -> Fail on ignored tests: False
-> Extensions

    -> Extensions
  - io.kotlintest.extensions.SystemPropertyTagExtension

      - io.kotlintest.extensions.SystemPropertyTagExtension
  - io.kotlintest.extensions.RuntimeTagExtension

      - io.kotlintest.extensions.RuntimeTagExtension


Gradle Test Executor 3 finished executing tests.

> Task :test FAILED
因此,即使得到以下信息,我在日志中也看不到任何异常或任何其他问题:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':test'.
> No tests found for given includes: [com.tractive.hwservice.HardwareServiceApplicationSpec](filter.includeTestsMatching)
感谢您的任何帮助,我已经尝试过各种gradle版本,但到目前为止没有任何组合可以使用。一位同事告诉我,我可能必须使用其他测试运行程序,但在升级指南/文档中找不到与之相关的任何内容。
有趣的是,我将另一项服务升级到了最新的Spring Boot版本,该版本使用Gradle包装器6.4,并且该测试可以按预期进行。

最佳答案

最终使它可以与任何Gradle版本一起使用,并尝试使用(5.6.x,6.3、6.4、6.5和6.6)。
我们缺少的是更新kotlin plugin.spring版本。在将其更新为1.3.72而不是1.3.50后,一切都按预期工作。

关于spring-boot - Spring Boot升级到2.3.2后,Gradle找不到测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63393759/

相关文章:

java - 在 Jedis 中使用连接池

java - 使用 webAllowOthers 的 H2 控制台远程访问

android - 将项目导入 Android Studio 遇到的问题

android - 将提交按钮添加到 SearchView

android - 带有Android Studio的android-maps-utils文件夹

gradle - Gradle-复制任务完成操作后如何执行某些操作?

java - 使用 Spring Security 进行 Spring Boot 2 测试

java - 上传多部分文件时出现 FileNotFoundException - Spring boot

Gradle Kotlin DSL : Define Kotlin version in unique place

java - onRestoreInstanceState 访问 kotlin 中的私有(private)变量