forked from hush/SilentDragonAndroid
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1008 B
31 lines
1008 B
package cash.z.ecc.android.feedback
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.Job
|
|
import kotlinx.coroutines.cancel
|
|
import kotlinx.coroutines.test.TestCoroutineDispatcher
|
|
import kotlinx.coroutines.test.TestCoroutineScope
|
|
import kotlinx.coroutines.test.resetMain
|
|
import kotlinx.coroutines.test.setMain
|
|
import org.junit.rules.TestWatcher
|
|
import org.junit.runner.Description
|
|
|
|
class CoroutinesTestRule(
|
|
val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher()
|
|
) : TestWatcher() {
|
|
|
|
lateinit var testScope: TestCoroutineScope
|
|
|
|
override fun starting(description: Description?) {
|
|
super.starting(description)
|
|
Dispatchers.setMain(testDispatcher)
|
|
testScope = TestCoroutineScope()
|
|
}
|
|
|
|
override fun finished(description: Description?) {
|
|
super.finished(description)
|
|
Dispatchers.resetMain()
|
|
testDispatcher.cleanupTestCoroutines()
|
|
if (testScope.coroutineContext[Job]?.isActive == true) testScope.cancel()
|
|
}
|
|
}
|