在Spring Boot升级到2.3.2

如何解决在Spring Boot升级到2.3.2

我们最近升级了Kotlin Spring Boot项目,使之成为Spring Boot 2.3.2,从那时起,gradle似乎再也无法接受任何测试了。

即使the documentation声明5.6.x也应该工作,我们仍使用gradle包装器5.6.2并将其升级到6.3。当我降级到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 wrapper 6.4,并且在那里的测试如期进行。

解决方法

最后使它可以与任何Gradle版本一起使用,并尝试使用(5.6.x,6.3、6.4、6.5和6.6)。

我们缺少的是更新Kotlin plugin.spring版本。在将其更新为1.3.72而不是1.3.50之后,一切都按预期运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-