kotlinx.coroutines icon indicating copy to clipboard operation
kotlinx.coroutines copied to clipboard

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

Open harshal-msf opened this issue 1 year ago • 5 comments
trafficstars

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.

harshal-msf avatar May 02 '24 06:05 harshal-msf

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.

dkhalanskyjb avatar May 03 '24 08:05 dkhalanskyjb

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?

harshal-msf avatar May 03 '24 15:05 harshal-msf

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

dkhalanskyjb avatar May 03 '24 16:05 dkhalanskyjb

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

harshal-msf avatar May 06 '24 08:05 harshal-msf

@harshal-msf, any updates?

dkhalanskyjb avatar Jul 11 '24 08:07 dkhalanskyjb