繁体   English   中英

在 groovy 和 spock 的集成测试中缺少对 EmbeddedKafka 的依赖

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM