Kotlin / kotlinx.coroutines

Library support for Kotlin coroutines
Apache License 2.0
12.94k stars 1.84k forks source link

Even After bumping kotlinx coroutine test dependency to 1.8.0 giving an UncaughtExceptionsBeforeTest. #4119

Open harshal-msf opened 4 months ago

harshal-msf commented 4 months ago
When running a testcase, it fails and in the stacktrace shows the following trace:

kotlinx.coroutines.test.UncaughtExceptionsBeforeTest: There were uncaught exceptions before the test started. Please avoid this, as such exceptions are also reported in a platform-dependent manner so that they are not lost.
    at kotlinx.coroutines.test.TestScopeImpl.enter(TestScope.kt:239)
    at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:309)
    at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(Unknown Source)
    at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0(TestBuilders.kt:168)
    at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0(Unknown Source)
    at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTest-8Mi8wO0$default(TestBuilders.kt:160)
    at kotlinx.coroutines.test.TestBuildersKt.runTest-8Mi8wO0$default(Unknown Source)

Observation: When I correct a test that throws the "UncaughtExceptionsBeforeTest" exception, it passes, but then another test in a different class fails with the same exception. Fixing the new failing test causes another to fail, and this cycle continues.

Things which i have tried to solve this issue:

  1. Bump kotlinxCoroutinesTest version to 1.8.0

  2. Running failed tests which has runTest method inside try catch block to check all suppressed exception.

  3. Checked if any exception is thrown before and added that same exception in try catch block.

  4. Used Test dispatcher rule which make tests run on same coroutine.

Is there anything i'm missing, to solve this issue i checked all previous issues conversations and applied those fixes which mentioned in the conversation still getting this same issue.

dkhalanskyjb commented 4 months ago

The fix is what the exception says: don't throw any exceptions before runTest starts. Exceptions thrown before runTest begins are always considered to be errors.

harshal-msf commented 4 months ago

Yes Exceptions is self-explanatory. However, when I implemented a try-catch block to check for suppressed exceptions, none were returned. Despite observing that suppressed exceptions are added in TestScope.enter(), none are being printed. Not sure am i missing any step?

dkhalanskyjb commented 4 months ago

Interesting. Do you observe suppressed exceptions if you add Thread.sleep(1000) just before runTest?

harshal-msf commented 4 months ago

Need to check this i will check this and update accordingly.

dkhalanskyjb commented 1 month ago

@harshal-msf, any updates?