Member-only story
TestCoroutineDispatcher Deprecated. Bagaimana cara mengatasinya?
2 min readMay 24, 2022
Pada awalnya, untuk melakukan testing pada Coroutine, kita perlu menggunakan TestCoroutineDispatcher dan runBlockingTest dari library org.jetbrains.kotlinx:kotlinx-coroutines-test. Bentuknya kira-kira seperti ini:
val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher()
@Before
fun setupDispatcher() {
Dispatchers.setMain(testDispatcher)
}
@After
fun tearDownDispatcher() {
Dispatchers.resetMain()
testDispatcher.cleanupTestCoroutines()
}
@Test
fun yourTestCase() = runBlockingTest {
//coroutine or suspend function
}
Atau jika dibuat dengan Custom Rule bisa jadi seperti ini:
@ExperimentalCoroutinesApi
class MainCoroutineRule(val dispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher()):
TestWatcher(),
TestCoroutineScope by TestCoroutineScope(dispatcher) {
override fun starting(description: Description?) {
super.starting(description)
Dispatchers.setMain(dispatcher)
}override fun finished(description: Description?) {
super.finished(description)
cleanupTestCoroutines()
Dispatchers.resetMain()
}
}
dengan penerapannya cukup seperti ini:
@get:Rule
var mainCoroutineRule =…