HomePostsSearch
KeyFlow LogoKEYLOW
BETAv2026.03.14

Android view에서 ViewModel을 호출했는데, UnitTest는 어떻게 할까?

Taehwan kwon (theo)Taehwan kwon (theo)
about 1 month ago(Edited)
4 min read

혹시 launchIn 남용으로 ViewModel 유닛 테스트를 포기하고 계시지는 않나요?

·함수에서 launchIn을 제거하고 Flow를 리턴하게 함으로써 비동기 이벤트를 외부에서 구독 및 검증 가능한 구조로 분리
·Cash App의 Turbine 라이브러리를 활용하여 Flow의 아이템 발행 및 완료 상태를 직관적인 DSL로 테스트
·UnitTest 환경에서 Dispatchers.setMain 설정 및 InstantTaskExecutorRule 적용을 통해 코루틴과 LiveData 스케줄러 문제 해결

On this page

  • 이 글에서 알아볼 내용
  • 함수의 분리
  • UnitTest - 준비작업
  • UnitTest
  • UnitTest에서 사용한 라이브러리
  • coroutines test
  • turbine
  • core testing
  • 이 코드는
  • 마무리
Taehwan kwon (theo)

Taehwan kwon (theo)

@taehwandev

[안녕하세요, 태환입니다] 글쓰기 플랫폼 KeyFlow의 운영과 개발을 총괄하고 있는 태환입니다. 사용자가 생각에 집중할 수 있는 환경을 만들기 위해 플랫폼인 키플로우 전체의 기획부터 배포, 관리를 리딩하고 있습니다.

[경험 및 전문성]

  • KeyFlow Management: 서비스의 전반적인 운영을 책임지고 있습니다.
  • Mobile Engineering: 안드로이드와 iOS 플랫폼 모두에서 안정적이고 매끄러운 사용자 경험을 구현합니다. 기기의 특성에 최적화된 에디터와 기능을 개발하는 데 강점이 있습니다.
  • Openness & Stability: 플랫폼의 개방성을 확대하면서도, 시스템의 안정성을 놓치지 않는 균형 잡힌 개발 철학을 추구합니다.

[목표] 단순한 기능 구현을 넘어, 전 세계 사용자가 언어의 장벽 없이 소통할 수 있는 글로벌 플랫폼으로 KeyFlow를 성장시키는 것이 저의 목표입니다.

기술 스택 요약 (Tech Summary)

  • Mobile: Android (Kotlin/Java), iOS (Swift)
  • Highlight: GitHub Gist Integration, AI Language Detection, Cross-platform Optimization
kotlin
1
2
3
4
5
data class User(
  val name: String = "taehwan",
  val bio: String = "Android, iOS",
  val nickName: String = "Theo",
)
Was this helpful?Your support means a lot to the author.
Home
Posts
Inbox