KOTLIN · 테스트
통합 테스트 (Integration Test)
여러 컴포넌트를 조합하여 시스템 동작을 검증하는 통합 테스트 패턴입니다.
테스트중급integration-testsystem-testcomponentend-to-end
핵심 설명
여러 컴포넌트를 조합하여 시스템 동작을 검증하는 통합 테스트 패턴입니다.
Kotlin code
// 시스템 구성요소
class Database {
private val store = mutableMapOf<String, String>()
fun put(key: String, value: String) { store[key] = value }
fun get(key: String): String? = store[key]
fun clear() = store.clear()
}
class Cache(private val db: Database) {
private val mem = mutableMapOf<String, String>()
fun get(key: String): String? = mem[key] ?: db.get(key)?.also { mem[key] = it }
fun put(key: String, value: String) { mem[key] = value; db.put(key, value) }
fun invalidate(key: String) { mem.remove(key) }
}
class ApiService(private val cache: Cache) {
fun getData(key: String): String = cache.get(key) ?: "NOT_FOUND"
fun setData(key: String, value: String) = cache.put(key, value)
}
// 통합 테스트
fun integrationTest() {
val db = Database()
val cache = Cache(db)
val api = ApiService(cache)
// 테스트 1: 데이터 저장 및 조회
api.setData("user:1", "김철수")
assert(api.getData("user:1") == "김철수") { "저장/조회 실패" }
// 테스트 2: 캐시 무효화 후 DB에서 조회
cache.invalidate("user:1")
assert(api.getData("user:1") == "김철수") { "DB 폴백 실패" }
// 테스트 3: 존재하지 않는 키
assert(api.getData("none") == "NOT_FOUND") { "미존재 키 처리 실패" }
println("통합 테스트 모두 통과!")
}
fun main() {
integrationTest()
}학습 팁
통합 테스트는 각 테스트 전에 상태를 초기화(setUp)하고 테스트 후 정리(tearDown)하여 테스트 간 격리를 보장하세요.
주의할 점
통합 테스트에서 외부 서비스(API, DB)에 직접 의존하면 느리고 불안정합니다. 테스트용 인메모리 구현을 사용하세요.
자주 묻는 질문
통합 테스트 (Integration Test)란 무엇인가요?
여러 컴포넌트를 조합하여 시스템 동작을 검증하는 통합 테스트 패턴입니다.
통합 테스트 (Integration Test) 학습 시 주의할 점은 무엇인가요?
통합 테스트에서 외부 서비스(API, DB)에 직접 의존하면 느리고 불안정합니다. 테스트용 인메모리 구현을 사용하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.