-
-
Notifications
You must be signed in to change notification settings - Fork 68
Open
Description
Describe the bug
When running tests on Robolectric, subsequent tests fail with the following exception:
A Koin Application has already been started
org.koin.core.error.KoinApplicationAlreadyStartedException: A Koin Application has already been started
at org.koin.core.context.GlobalContext.register(GlobalContext.kt:44)
at org.koin.core.context.GlobalContext.startKoin(GlobalContext.kt:63)
at org.koin.ksp.generated.MainApplicationGencom_kfaraj_samples_koinKt.startKoin(MainApplicationGencom$kfaraj$samples$koin.kt:16)
at org.koin.ksp.generated.MainApplicationGencom_kfaraj_samples_koinKt.startKoin$default(MainApplicationGencom$kfaraj$samples$koin.kt:15)
at com.kfaraj.samples.koin.MainApplication.onCreate(MainApplication.kt:12)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1381)
at org.robolectric.android.internal.RoboMonitoringInstrumentation.callApplicationOnCreate(RoboMonitoringInstrumentation.java:157)
at org.robolectric.android.internal.AndroidTestEnvironment.lambda$installAndCreateApplication$2(AndroidTestEnvironment.java:407)
To Reproduce
Run the following tests on Robolectric:
import org.koin.ksp.generated.*
@KoinApplication
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin()
}
}
class MainActivity : ComponentActivity()
@OrderWith(Alphanumeric::class)
@RunWith(AndroidJUnit4::class)
class MainActivityTest {
@Test
fun launchActivity() {
launchActivity<MainActivity>()
}
@Test
fun relaunchActivity() {
launchActivity<MainActivity>()
}
}
https://github.com/kfaraj/samples/tree/test/koin/koin
Expected behavior
Subsequent tests running on Robolectric should not fail.
Koin project used and used version (please complete the following information):
koin-android version 4.1.1
koin-annotations version 2.3.1
Additional moduleDefinition
- Running the same tests on Android instead of Robolectric works properly.
- Running the same tests using Hilt instead of Koin also works properly.
Metadata
Metadata
Assignees
Labels
No labels