Thats helped me in in order to run Testcontainers with micronauts in Kotlin.
import a.b.c.model.NewOffer
import a.b.c.model.QuantityType
import io.micronaut.test.extensions.junit5.annotation.MicronautTest
import io.micronaut.test.support.TestPropertyProvider
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
import org.testcontainers.containers.MongoDBContainer
import org.testcontainers.junit.jupiter.Testcontainers
import javax.inject.Inject
@Testcontainers
@MicronautTest()
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
internal class OfferRepositoryTest() : TestPropertyProvider {
@Inject
private lateinit var offerRepository: OfferRepository
private val mongoDBContainer: MongoDBContainer = MongoDBContainer("mongo:4").apply { start() }
@Test
internal fun getEmptyOffers() {
val find = offerRepository.find()
assertThat(find).isEmpty()
}
override fun getProperties(): MutableMap<String, String> {
return mutableMapOf(
"MONGO_HOST" to mongoDBContainer.containerIpAddress,
"MONGO_PORT" to "${mongoDBContainer.getMappedPort(27017)}"
)
}
}
and the src/main/resources/application.yml looks as generated by micronaut
mongodb:
connection-pool:
max-size: 20
uri: mongodb://${MONGO_HOST:localhost}:${MONGO_PORT:27017}
CLICK HERE to find out more related problems solutions.