KOTLIN · 테스트
테스트 픽스처 (Test Fixture)
테스트에 필요한 데이터와 환경을 체계적으로 설정하는 픽스처 패턴입니다.
테스트중급fixturetest-databuilderfactory-method
핵심 설명
테스트에 필요한 데이터와 환경을 체계적으로 설정하는 픽스처 패턴입니다.
Kotlin code
data class User(val id: String, val name: String, val email: String, val role: String = "USER")
data class Order(val id: String, val userId: String, val items: List<String>, val total: Int)
// 테스트 픽스처 빌더
object TestFixtures {
fun user(
id: String = "user-${(1000..9999).random()}",
name: String = "테스트유저",
email: String = "$id@test.com",
role: String = "USER"
) = User(id, name, email, role)
fun admin(name: String = "관리자") = user(name = name, role = "ADMIN")
fun order(
userId: String = "user-001",
items: List<String> = listOf("상품A"),
total: Int = items.size * 10000
) = Order("order-${(1000..9999).random()}", userId, items, total)
// 대량 데이터 생성
fun users(count: Int) = List(count) { user(id = "user-${it + 1}", name = "유저${it + 1}") }
}
fun main() {
// 기본 픽스처
val user = TestFixtures.user()
println("기본 유저: $user")
// 커스텀 픽스처
val admin = TestFixtures.admin("슈퍼관리자")
println("관리자: $admin")
// 연관 데이터
val testUser = TestFixtures.user(id = "u-001", name = "김철수")
val testOrder = TestFixtures.order(userId = testUser.id, items = listOf("노트북", "마우스"))
println("주문: $testOrder")
// 대량 데이터
val users = TestFixtures.users(5)
users.forEach { println(" $it") }
}학습 팁
픽스처 함수에 기본값을 제공하면 테스트마다 필요한 필드만 지정하면 됩니다. 테스트 의도가 명확해집니다.
주의할 점
픽스처 간 상태를 공유하면 테스트 순서에 의존하게 됩니다. 각 테스트마다 새 픽스처를 생성하세요.
자주 묻는 질문
테스트 픽스처 (Test Fixture)란 무엇인가요?
테스트에 필요한 데이터와 환경을 체계적으로 설정하는 픽스처 패턴입니다.
테스트 픽스처 (Test Fixture) 학습 시 주의할 점은 무엇인가요?
픽스처 간 상태를 공유하면 테스트 순서에 의존하게 됩니다. 각 테스트마다 새 픽스처를 생성하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.