[英]Missing dependency on EmbeddedKafka on integration test with groovy and spock
我一直在尝试使用 EmbeddedKafka 创建集成测试,但是在尝试运行它时遇到了缺少依赖项的问题,这是错误:
由于缺少依赖项 org/I0Itec/zkclient/serialize/ZkSerializer,无法加载 class 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”的 bean 时出错:调用 init 方法失败; 嵌套异常是 java.lang.NoClassDefFoundError: scala/math/Ordering$$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 jars 的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.