Kontainers

annotation class Kontainers

Annotation indicating the JUnit test suite should be extended with the JUnit Jupiter extensionKontainerExtension.

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
}

Constructors

Link copied to clipboard
fun Kontainers()