feat: 공통 통합테스트를 위한 Spec 타입별 기본 테스트 클래스 정의

This commit is contained in:
이상진 2025-09-03 10:59:22 +09:00
parent b4896e243e
commit 6db81feb9b

View File

@ -1,9 +1,73 @@
package roomescape.util package roomescape.util
import io.kotest.core.config.AbstractProjectConfig import io.kotest.core.config.AbstractProjectConfig
import io.kotest.core.spec.Spec
import io.kotest.core.spec.style.BehaviorSpec
import io.kotest.core.spec.style.FunSpec
import io.kotest.core.spec.style.StringSpec
import io.kotest.extensions.spring.SpringExtension import io.kotest.extensions.spring.SpringExtension
import io.kotest.extensions.spring.SpringTestExtension import io.kotest.extensions.spring.SpringTestExtension
import io.restassured.RestAssured
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.web.server.LocalServerPort
import roomescape.member.infrastructure.persistence.MemberRepository
import roomescape.util.CleanerMode.AFTER_EACH_TEST
object KotestConfig : AbstractProjectConfig() { object KotestConfig : AbstractProjectConfig() {
override fun extensions(): List<SpringTestExtension> = listOf(SpringExtension) override fun extensions(): List<SpringTestExtension> = listOf(SpringExtension)
} }
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
abstract class FunSpecSpringbootTest : FunSpec({
extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST))
}) {
@Autowired
private lateinit var memberRepository: MemberRepository
@LocalServerPort
var port: Int = 0
lateinit var loginUtil: LoginUtil
override suspend fun beforeSpec(spec: Spec) {
RestAssured.port = port
loginUtil = LoginUtil(memberRepository)
}
}
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
abstract class StringSpecSpringbootTest : StringSpec({
extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST))
}) {
@Autowired
private lateinit var memberRepository: MemberRepository
@LocalServerPort
var port: Int = 0
lateinit var loginUtil: LoginUtil
override suspend fun beforeSpec(spec: Spec) {
RestAssured.port = port
loginUtil = LoginUtil(memberRepository)
}
}
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
abstract class BehaviorSpecSpringbootTest : BehaviorSpec({
extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST))
}) {
@Autowired
private lateinit var memberRepository: MemberRepository
@LocalServerPort
var port: Int = 0
lateinit var loginUtil: LoginUtil
override suspend fun beforeSpec(spec: Spec) {
RestAssured.port = port
loginUtil = LoginUtil(memberRepository)
}
}