微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在使用 groovy 和 spock 进行集成测试时缺少对 EmbeddedKafka 的依赖

如何解决在使用 groovy 和 spock 进行集成测试时缺少对 EmbeddedKafka 的依赖

我一直在尝试使用嵌入式 Kafka 创建集成测试,但是在尝试运行它时遇到了缺少依赖项的问题,这是错误

由于缺少依赖 org/I0Itec/zkclient/serialize/ZkSerializer,无法加载类 org.springframework.kafka.test.EmbeddedKafkabroker

我看到一些东西说这与我的依赖项有关,所以这是我的依赖项:

springBootVersion = '2.3.5.RELEASE'

compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
compile("org.springframework.kafka:spring-kafka:${springBootVersion}")
testCompile("org.springframework.boot:spring-boot-starter-test:${springBootVersion}",'org.spockframework:spock-core:1.2-groovy-2.4','org.spockframework:spock-spring:1.2-groovy-2.4','com.microsoft.azure:spring-data-cosmosdb:2.3.0','com.nimbusds:oauth2-oidc-sdk:5.64.4',)
testCompile("org.springframework.kafka:spring-kafka-test:${springBootVersion}")

那么,我的问题是,我是否遗漏了什么?

编辑

变更指示的版本后,我得到一个不同的错误

错误名为“embeddedKafka”创建豆:初始化的调用 方法失败;嵌套异常是 java.lang.NoClassDefFoundError: Scala/数学/订购$$anon$7

我已经添加了 Scala 依赖项,但仍然有同样的问题:

testImplementation("org.scala-lang:scala-library:2.12.11")
testImplementation("org.scala-lang:scala-reflect:2.12.11")

解决方法

不知何故,您的 kafka Vs 不匹配。 kafka-clients 类路径上的 jars;它们都必须是相同的版本。

您通常不应在启动依赖项上指定版本,而应使用其依赖项管理。

您正在使用 spring-kafka 2.3.5,而 spring-boot 2.3.5 需要 spring-kafka 2.5.7。

Spring-kafka 2.5.x 使用 kafka-clients 2.5.1。

有关如何在使用与 Boot 规定的版本不同的版本时覆盖 kafka jar 版本的信息,请参阅 here

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