add kafka test container
This commit is contained in:
@@ -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
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user