Member-only story

TestCoroutineDispatcher Deprecated. Bagaimana cara mengatasinya?

Ahmad Arif Faizin
2 min readMay 24, 2022

--

Photo by Content Pixie on Unsplash

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 =

--

--

No responses yet