분류 전체보기
-
코루틴 테스트 환경(runTest vs UnconfinedTestDispatcher) 완벽 이해하기kotlin/coroutine 2025. 10. 31. 22:48
ObjectiveCompose 및 ViewModel 테스트에서 적절한 코루틴 테스트 환경을 선택하고, 안정적이고 예측 가능한 테스트를 구현한다.Key ResultsKR1. runTest 와 TestScope + TestDispatcher 의 차이를 명확히 이해한다.항목runTestTestScope + TestDispatcher스코프 생성자동 생성수동 생성시간 제어가상 시간 (advanceTimeBy 등) 가능실제 시간 기반정리(cleanup)자동 정리직접 관리 필요DI 주입제한적명시적 주입 용이권장 사용처단순 비동기 단위 테스트ViewModel, Compose, DI 환경핵심 요약:runTest → 테스트 코루틴의 표준 진입점, 가상 시간 제어 가능TestScope + TestDispatcher → 유연..
-
6장 의존 관계와 결합도(Coupling)kotlin/[Book] Code Readability 2025. 10. 31. 00:07
1. 의존 관계(Dependency)한 클래스나 모듈이 다른 클래스나 모듈의 존재에 의존할 때 발생합니다.예시:class UserRepository { fun getUser(id: Int): User = ...}class UserService( private val repository: UserRepository // 🔸 UserService는 UserRepository에 의존) { fun loadUser(id: Int) = repository.getUser(id)}2. 결합도(Coupling)의존 관계의 강도(strength) 를 나타냅니다.결합도가 높을수록 코드 변경 시 영향 범위가 커집니다.따라서 “약한 결합(Loose Coupling)”이 바람직합니다. 3. 결합도의 종류 및..
-
Flow의 UnitTest를 손쉽게 만드는 방법kotlin/Test 2025. 10. 28. 00:20
OKRObjectiveKotlin의 Flow/StateFlow를 app.cash.turbine으로 안정적으로 테스트하고, Android 프로젝트에서 재사용 가능한 테스트 패턴을 확립한다.Key ResultsTurbine의 기본 개념과 장점을 이해한다.Flow/StateFlow 테스트를 위한 핵심 API와 패턴을 습득한다.runTest·가상 시간·advanceUntilIdle와 함께 Turbine을 올바르게 사용한다.실제 Android 코드(예: ViewModel 상태 스트림)를 검증하는 테스트 템플릿을 확보한다.1) Turbine 개요Turbine은 Kotlin Flow를 테스트하기 위한 경량 라이브러리다.test { ... } 블록에서 스트림을 수집하고, awaitItem() 같은 API로 방출 값을 ..
-
ArrayDeque를 Deferred collection으로 사용하는 이유kotlin 2025. 10. 27. 23:32
OKRObjectiveKotlin 표준 라이브러리의 ArrayDeque를 이해하고, Android와 코루틴 환경에서 안전하고 효율적으로 활용한다.Key ResultsArrayDeque의 동작 원리와 핵심 메서드를 숙지한다.실전에서 자주 쓰는 활용 시나리오와 Deferred 큐 패턴을 익힌다.코루틴 동시성 이슈와 안전한 사용 패턴을 적용한다.다른 자료구조와의 차이를 이해해 올바르게 선택한다.1) 개요ArrayDeque는 양방향 큐(Double-ended Queue)로, 앞과 뒤 양쪽에서 빠르게 삽입과 삭제가 가능한 컬렉션이다.내부는 배열 기반(원형 버퍼)으로 구현되어 메모리 효율이 좋고, 큐/스택 용도에 적합하다.Kotlin 표준 라이브러리에 포함되어 별도 의존성이 필요 없다.2) 핵심 특징구조: 원형 배..
-
모듈 간 테스트 코드 공유하기 (Android Test Fixtures)Android 2025. 10. 26. 20:51
OKR (Objective & Key Results)Objective:Android Gradle의 testFixtures 기능을 이해하고,모듈 간 테스트 유틸과 더블(mock) 코드를 재사용할 수 있도록 한다.Key Results:testFixtures.enable = true의 역할을 명확히 설명할 수 있다.src/testFixtures 디렉토리를 구성해 공용 테스트 코드를 작성할 수 있다.다른 모듈에서 testFixtures를 불러오는 방법을 직접 적용할 수 있다.Test Fixtures란?테스트를 작성하다 보면 여러 테스트에서 공통으로 사용하는 코드가 생긴다.예를 들어 다음과 같은 코드들이다.테스트용 유틸리티 클래스더미 데이터 생성기Mock 객체공용 테스트 헬퍼이런 코드를 src/test/java에..
-
[Code Readability] 2장 Namingkotlin/[Book] Code Readability 2025. 10. 24. 23:58
어떤 이름이 좋은 이름인가?의미가 정확해야함isVisible은 소리를 위한 것이 아니다.충분히 설명적이어야 함width/height rather than w/h이름에 사용하는 문법왜 문법이 중요한가?CallbackEventMessageClickViewText는 무엇일까?좋지 않은 이름, 다양한 해석이 된다.A text of a click view? of a callback event message?MessageTextViewClickEventCallback?callback으로 읽힌다.A callback of click events on a message text view중요한 부분은 올바른 어순이라면 명사로써 뒷부분에 정의된다.명사: class, variable( including property fun..
-
[Code Readability] 1장 도입과 원칙kotlin/[Book] Code Readability 2025. 10. 24. 23:58
가독성이 좋은 코드란?분명해야하고, 간단해야 하고 독립적이어야 하고, 구조적이어야 한다.프로덕트의 규모가 커질수록 코드를 작성하는 것보다 읽는 시간이 더 많아진다.쓰기 편한코드보다 읽기 쉬운 코드가 더 중요하다.프로덕트의 규모가 큰 경우에만 중요하고, 일시적으로 사용하는 코드는 괜찮다.가독성을 개선하는 방법기술, 지식을 목적을 생각해서 선택해야 한다.기술 자체를 사용해보고 싶어서 사용하면 안된다.가치가 있다면 복잡해도 된다.자동 검증을 최대한 활용한다.컴파일러, 테스트 등을 더 신뢰된다.더 자주 논의 하라팀원들과 만들면서 계속 이야기한다.계속 배우자가독성이 높은 코드를 작성하려면 여러 공부가 필요하다.강의, 훈련, 책, 온라인 기사, 코드 리뷰, 페어 프로그래밍PolicyThe boy scout rule..
-
Android에서 Glide를 더이상 사용할 수 없는 이유Android 2025. 10. 21. 23:00
Kotlin 2.2.20 Exposed Visibility Warning 정리🧩 경고의 의미Kotlin 2.2.20부터 다음과 같은 새로운 컴파일러 경고가 추가됨:“A more visible declaration references a less visible declaration in its signature.”즉,더 넓은 가시성의 선언(public/internal 등)이 자신의 시그니처에 더 좁은 가시성(private/internal/package-private 등)을 사용하면 경고 발생.이 경고는 Kotlin 2.4부터는 에러로 승격될 예정임.📘 예시로 이해하기internal class Apublic fun foo(): A = A()// ❌ public 함수가 internal 타입을 반환 → 경고..