반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- kotlin강좌
- mockito
- 자바
- 병렬프로그래밍
- Kotlin
- 커스텀상태
- g 단위테스트
- Coroutine
- 안드로이드강좌
- 글또
- Compose
- 안드로이드스튜디오
- 테스트
- 책
- 안드로이드
- 코루틴
- Gradle
- 알고리즘
- 스레드
- Rxjava
- k8s
- viewmodel
- 알게되는
- android
- 병럴프로그래밍
- theming
- ReactiveProgramming
- 디자인패턴
- 코틀린
- 회고
Archives
- Today
- Total
선생님, 개발을 잘하고 싶어요.
[테스트] 코루틴, viewModelScope 를 테스트 하는 방법 본문
https://medium.com/androiddevelopers/easy-coroutines-in-android-viewmodelscope-25bffb605471 > 이 포스팅 내용이 훨씬 좋습니다. 이거 확인 고고
도입
즐겁게 Coroutine 을 적용하고, ViewModel 테스트 코드를 작성한 찰나 테스트가 실패하는 경우가 발생하니
바로, viewModel 의 viewModelScope 때문이다. viewModelScope.launch 로 코루틴 을 실행하지 않고, runBlocking 으로 테스트 쓰레드를 막으면 테스트가 원하는 대로 동작하지만, 실제로 앱을 키면 에러가 나게 된다.
해결
코루틴 테스트 지원 라이브러리를 사용한다.
1. gradle (app 단위)에 라이브러리를 추가한다.
dependencies {
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.3.5'
}
2. @Before 코드에서 테스트 쓰레드를, 메인 쓰레드로 지정한다.
val mainThreadSurrogate = newSingleThreadContext(HabitViewModelTest::class.java.simpleName)
@Before
fun setup() {
// https://github.com/Kotlin/kotlinx.coroutines/tree/master/kotlinx-coroutines-test
// 테스트 할 코드가 동작하는 코습관 동작을 테스트 스레드로 지정한다.
Dispatchers.setMain(mainThreadSurrogate)
}
3. @After 코드에서 메인 쓰레드를 원상복구 시킨다.
@After
fun tearDown() {
Dispatchers.resetMain()
}
이제 편안하게 ViewModel 테스트 코드를 작성하면 된다. :)
'개발 > android 개발' 카테고리의 다른 글
[잡학] Activity 전환 애니메이션 설정하기, overridePendingTransition (2) | 2020.04.19 |
---|---|
[룸] Android Room 개발, Coroutine과 Test로 편하게 하기. (0) | 2020.04.11 |
[테스트] 특정 에러를 던지는 지 테스트 (0) | 2020.03.30 |
[잡학] 액티비티 라이프 사이클, 프래그먼트 라이프 사이클 케이스 정리하기 (0) | 2020.03.08 |
[안드로이드 잡학] Android ScrollView, ScrollTo 정복하기 + Custom Smooth Scroll (2) | 2020.01.14 |
Comments