KasperskyLab / Kaspresso

Android UI test framework
https://kasperskylab.github.io/Kaspresso/
Apache License 2.0
1.78k stars 150 forks source link

First test fails with firstTestStartedDescription has not been initialized #518

Closed matale closed 1 year ago

matale commented 1 year ago

Describe the bug The first test always fails with the error lateinit property firstTestStartedDescription has not been initialized if I have more than one test then the rest of the tests run normally, if I have only one test or I run a single test then it also fails.

I cant reproduce this error if I create a minimal new project, so I suspect its something about the way this project is setup or some other dependency but I have no idea what it can be.

Using kaspressoBuilder = Kaspresso.Builder.withForcedAllureSupport() kaspresso:1.5.2 using KaspressoRunner

Full exception.

05-21 17:07:10.524  6807  6882 E TestRunner: ----- begin exception -----
05-21 17:07:10.525  6807  6882 E TestRunner: kotlin.UninitializedPropertyAccessException: lateinit property firstTestStartedDescription has not been initialized
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.kaspresso.runner.listener.KaspressoLateRunListener$Cache.getFirstTestStartedDescription(KaspressoLateRunListener.kt:35)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.kaspresso.runner.listener.KaspressoLateRunListener$DefaultImpls.lateInit(KaspressoLateRunListener.kt:23)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.components.alluresupport.runlisteners.AllureRunListener.lateInit(AllureRunListener.kt:23)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.kaspresso.runner.listener.KaspressoRunNotifierImpl.addListener(KaspressoRunNotifier.kt:41)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.components.alluresupport.AllureSupportKaspressoBuilderKt.addRunListenersIfNeeded(AllureSupportKaspressoBuilder.kt:98)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.components.alluresupport.AllureSupportKaspressoBuilderKt.access$addRunListenersIfNeeded(AllureSupportKaspressoBuilder.kt:1)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.components.alluresupport.AllureSupportKaspressoBuilderKt$withForcedAllureSupport$2.invoke(AllureSupportKaspressoBuilder.kt:72)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.components.alluresupport.AllureSupportKaspressoBuilderKt$withForcedAllureSupport$2.invoke(AllureSupportKaspressoBuilder.kt:65)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.kaspresso.kaspresso.Kaspresso$Builder$Companion.simple(Kaspresso.kt:241)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.components.alluresupport.AllureSupportKaspressoBuilderKt.withForcedAllureSupport(AllureSupportKaspressoBuilder.kt:65)
05-21 17:07:10.525  6807  6882 E TestRunner:    at com.kaspersky.components.alluresupport.AllureSupportKaspressoBuilderKt.withForcedAllureSupport$default(AllureSupportKaspressoBuilder.kt:63)
05-21 17:07:10.525  6807  6882 E TestRunner:    at me.latergram.latergramme.mvvm.account.ui.live.MainActivityKTest.<init>(MainActivityKTest.kt:31)
05-21 17:07:10.525  6807  6882 E TestRunner:    at java.lang.reflect.Constructor.newInstance0(Native Method)
05-21 17:07:10.525  6807  6882 E TestRunner:    at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:217)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.Suite.runChild(Suite.java:128)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.Suite.runChild(Suite.java:27)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
05-21 17:07:10.525  6807  6882 E TestRunner:    at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
05-21 17:07:10.525  6807  6882 E TestRunner:    at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:67)
05-21 17:07:10.525  6807  6882 E TestRunner:    at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:58)
05-21 17:07:10.525  6807  6882 E TestRunner:    at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:446)
05-21 17:07:10.525  6807  6882 E TestRunner:    at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2322)
05-21 17:07:10.526  6807  6882 E TestRunner: ----- end exception -----
vrnvorona commented 1 year ago

Same problem. KaspressoRunner() and Kaspresso.Builder.withForcedAllureSupport()

com.kaspersky.kaspresso.runner.listener.KaspressoRunNotifierImpl#testStarted is called later than listener.lateInit(cache) in my tests.

Nikitae57 commented 1 year ago

Hi, @matale! Thank you four your submission. I'll give it a glance and address ASAP