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을 사용하는 것으로 문제를 해결했습니다.

 

테스트 성공

 

반응형