JUnit 5 확장을 제공하는 작은 라이브러리가 있는데 , 전체 컨텍스트를 버리는 대신 테스트 간에 오프셋을 최신으로 재설정하는 대신 EmbeddedKafkaBroker
사용하는 것보다 성능이 향상 됩니다.@DirtiesContext
내 build.gradle은 다음과 같습니다.
import org.springframework.boot.gradle.plugin.SpringBootPlugin
plugins {
id 'org.springframework.boot' version '2.3.5.RELEASE' apply false
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
}
dependencyManagement {
imports {
mavenBom SpringBootPlugin.BOM_COORDINATES
}
}
sourceCompatibility = '1.8'
dependencies {
implementation 'org.junit.jupiter:junit-jupiter-api'
implementation 'org.springframework.kafka:spring-kafka'
implementation 'org.springframework.kafka:spring-kafka-test'
compileOnly 'org.springframework.integration:spring-integration-core'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntime 'org.springframework.integration:spring-integration-core'
testRuntime 'org.junit.jupiter:junit-jupiter-engine'
}
이것은 spring-kafka:2.5.7
에서 다양한 Scala 라이브러리 를 사용하는 것으로 해결됩니다 2.12
. 확장 프로그램을 시작하려고 EmbeddedKafkaBroker
하면 다음 예외가 발생합니다.
java.lang.NoClassDefFoundError: scala/math/Ordering$$anon$7
at kafka.api.ApiVersion$.orderingByVersion(ApiVersion.scala:45)
at kafka.api.ApiVersion.compare(ApiVersion.scala:139)
at kafka.api.ApiVersion.compare$(ApiVersion.scala:138)
at kafka.api.KAFKA_2_5_IV0$.compare(ApiVersion.scala:339)
at kafka.api.KAFKA_2_5_IV0$.compare(ApiVersion.scala:339)
at scala.math.Ordered.$greater$eq(Ordered.scala:91)
at scala.math.Ordered.$greater$eq$(Ordered.scala:91)
at kafka.api.KAFKA_2_5_IV0$.$greater$eq(ApiVersion.scala:339)
at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1561)
at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1269)
at org.springframework.kafka.test.EmbeddedKafkaBroker.afterPropertiesSet(EmbeddedKafkaBroker.java:313)
내가 지금까지 수행한 검색에서는 내가 수행하지 않는 특정 kafka 또는 scala 버전을 재정의하는 문제만 나타났습니다. 내가 무엇을 놓치고 있는지 또는 어떻게 고칠 수 있는지 아이디어가 있습니까?