| import kotlinx.coroutines.* |
| import kotlinx.coroutines.debug.junit4.* |
| import org.junit.* |
| |
| @Ignore // do not run it on CI |
| class TestRuleExample { |
| |
| @JvmField |
| @Rule |
| public val timeout = CoroutinesTimeout.seconds(1) |
| |
| private suspend fun someFunctionDeepInTheStack() { |
| withContext(Dispatchers.IO) { |
| delay(Long.MAX_VALUE) |
| println("This line is never executed") |
| } |
| |
| println("This line is never executed as well") |
| } |
| |
| @Test |
| fun hangingTest() = runBlocking { |
| val job = launch { |
| someFunctionDeepInTheStack() |
| } |
| |
| println("Doing some work...") |
| job.join() |
| } |
| |
| @Test |
| fun successfulTest() = runBlocking { |
| launch { |
| delay(10) |
| }.join() |
| } |
| |
| } |