add kafka test container

This commit is contained in:
2025-08-12 13:12:18 +02:00
committed by swordsteel
parent 2328e7ebe2
commit ca85a7ac64
6 changed files with 53 additions and 1 deletions

View File

@@ -0,0 +1,11 @@
package ltd.hlaeja.test.container
import ltd.hlaeja.test.container.extension.KafkaTestExtension
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.test.context.ContextConfiguration
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
@ExtendWith(KafkaTestExtension::class)
@ContextConfiguration(initializers = [KafkaTestExtension::class])
annotation class KafkaTestContainer

View File

@@ -0,0 +1,21 @@
package ltd.hlaeja.test.container.extension
import ltd.hlaeja.test.container.kafka.TestContainerKafka
import org.junit.jupiter.api.extension.BeforeAllCallback
import org.junit.jupiter.api.extension.ExtensionContext
import org.springframework.boot.test.util.TestPropertyValues
import org.springframework.context.ApplicationContextInitializer
import org.springframework.context.ConfigurableApplicationContext
class KafkaTestExtension : BeforeAllCallback, ApplicationContextInitializer<ConfigurableApplicationContext> {
override fun initialize(applicationContext: ConfigurableApplicationContext) {
TestPropertyValues.of(TestContainerKafka.props()).applyTo(applicationContext.environment)
}
override fun beforeAll(context: ExtensionContext) {
if (!TestContainerKafka.kafka.isRunning) {
TestContainerKafka.kafka.start()
}
}
}

View File

@@ -0,0 +1,13 @@
package ltd.hlaeja.test.container.kafka
import org.testcontainers.kafka.ConfluentKafkaContainer
object TestContainerKafka {
val kafka: ConfluentKafkaContainer = ConfluentKafkaContainer("confluentinc/cp-kafka:8.0.0")
.withReuse(true)
fun props(): Map<String, String> = mapOf(
"spring.kafka.bootstrap-servers" to kafka.bootstrapServers,
)
}