Android/Error
[Android] Kotlin runBlockingTest 오류
점냥
2021. 5. 27. 21:02
반응형
안녕하세요 점냥입니다:)
Kotlin으로 Android 프로젝트를 진행하면서 발생한 문제가 있고 해결 방법에 대해 말씀드리려고 합니다.
문제 상황 당시 Coroutine + Room 작동이 올바른지 테스트를 하려고 했고, Dao에 정의된 모든 함수들은 suspend로 정의되어 있기 때문에 코루틴 스코프가 필요했습니다.
@Test
@Throws(Exception::class)
fun writeHistoryAndReadInList() = runBlockingTest {
val history = History(searchWord = "test")
historyDao.insertHistory(history)
val findHistory = historyDao.findHistoryByWord("test")
assertEquals(history, findHistory)
}
runBlockingTest
을 사용하여 suspend 함수들을 호출하며 테스트를 진행하려고 했지만 작성한 테스트들은 모두 아래와 같은 에러 메세지를 보여주며 실패하게 됩니다.
Exception in thread "main" java.lang.IllegalStateException: This job has not completed yet at kotlinx.coroutines.JobSupport.getCompletionExceptionOrNull(JobSupport.kt:1114) at kotlinx.coroutines.test.TestBuildersKt.runBlockingTest(TestBuilders.kt:53) at
문제 해결
관련된 PR를 참고하여 저와 동일한 오류가 있다는 것을 인지하고, 여러 해결 방법 중 runBlockingTest가 아닌 runBlocking을 사용하는 것으로 문제를 해결했습니다.
반응형