KontainerExtension

open class KontainerExtension : AbstractParameterResolverKontainerExtension

Provides a JUnit Jupiter extension to simplify using Kontainers in JUnit 5 test suites.

Author

Scott Rossillo

Samples

import io.lettuce.core.RedisClient
import io.lettuce.core.RedisURI
import io.microkt.kontainers.context.spec.KontainerSpecOverride
import io.microkt.kontainers.junit5.annotation.Kontainers
import io.microkt.kontainers.redis.RedisKontainer
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags
import org.junit.jupiter.api.Test
fun main() { 
   //sampleStart 
   @Kontainers
@Tags(
    Tag("docker"),
    Tag("kubernetes")
)
internal class KontainerExtensionTest(
    private val redis: RedisKontainer,
    @KontainerSpecOverride(RedisBusterSpecProvider::class)
    private val redis2: RedisKontainer
) {
    private val client: RedisClient = RedisClient.create(RedisURI.create(redis.getAddress(), redis.getPort()!!))
    private val client2: RedisClient = RedisClient.create(RedisURI.create(redis2.getAddress(), redis2.getPort()!!))

    @Test
    fun testContainerImages() {
        assertEquals("redis:6.2-alpine", redis.kontainerSpec.image)
        assertEquals("redis:6.2-buster", redis2.kontainerSpec.image)
    }

    @Test
    fun testHashOps() {
        val commands = client.connect().sync()
        commands.hset(HASH_KEY, "foo", "bar")
        assertEquals(1, commands.hlen(HASH_KEY), "Hash should contain one key")
        assertEquals(0, client2.connect().sync().hlen(HASH_KEY), "Second redis should not contain data")
    }

    companion object {
        const val HASH_KEY = "kontainers"
    }
} 
   //sampleEnd
}

See also

Constructors

Link copied to clipboard
fun KontainerExtension()

Functions

Link copied to clipboard
open override fun afterAll(context: ExtensionContext?)

Removes all Kontainers started by this extension.

Link copied to clipboard
fun customize(kontainerSpec: KontainerSpec, override: KontainerSpecOverride): KontainerSpec

Applies @KontainerSpecOverrides to the Kontainer's default kontainerSpec.

Link copied to clipboard
open override fun kontainerStarted(kontainer: Kontainer, customPropertySuppliers: List<KClass<out PropertySupplier>>, useDefaultPropertySuppliers: Boolean)
Link copied to clipboard
override fun resolveParameter(parameterContext: ParameterContext, extensionContext: ExtensionContext?): Kontainer
Link copied to clipboard
open fun supportsKontainerType(kontainerKClass: KClass<Kontainer>, parameterContext: ParameterContext, extensionContext: ExtensionContext): Boolean
Link copied to clipboard
override fun supportsParameter(parameterContext: ParameterContext, extensionContext: ExtensionContext?): Boolean