Skip to content

Instantly share code, notes, and snippets.

@antonarhipov
Created July 6, 2022 12:43
Show Gist options
  • Save antonarhipov/b6fc840a85b895f2fb6500ed3733de79 to your computer and use it in GitHub Desktop.
Save antonarhipov/b6fc840a85b895f2fb6500ed3733de79 to your computer and use it in GitHub Desktop.
//TestApplicaiton.kt
fun main(args: Array<String>) {
val application = Application.createSpringApplication()
application.addInitializers(AbstractIntegrationTest.Initializer())
application.run(*args)
}
//AbstratIntegrationTest.kt
import org.junit.runner.RunWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.context.ApplicationContextInitializer
import org.springframework.context.ConfigurableApplicationContext
import org.springframework.core.env.MapPropertySource
import org.springframework.test.context.ContextConfiguration
import org.springframework.test.context.junit4.SpringRunner
@RunWith(SpringRunner::class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(initializers = [AbstractIntegrationTest.Initializer::class])
abstract class AbstractIntegrationTest {
class Initializer : ApplicationContextInitializer<ConfigurableApplicationContext> {
override fun initialize(context: ConfigurableApplicationContext) {
val env = context.environment
env.propertySources.addFirst(
MapPropertySource(
"testcontainers", properties
)
)
}
companion object {
val properties: Map<String, String>
get() = java.util.Map.of(
"a", "b"
)
}
}
}
//Application.kt
@SpringBootApplication
class Application {
companion object {
@JvmStatic
fun createSpringApplication(): SpringApplication {
return SpringApplication(Application::class.java)
}
}
}
fun main(args: Array<String>) {
Application.createSpringApplication().run(*args)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment