Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Espresso test giving: No Koin Context configured. Please use startKoin or koinApplication DSL

I'm running a espresso uiautomator test which runs well when using the green run > button on android studio. (image below)

Yet ./gradlew connectedAndroidTest is giving an error:

No Koin Context configured. Please use startKoin or koinApplication DSL

Why does it run through android studio but not on gradle? And how do I fix it?

@LargeTest
@RunWith(AndroidJUnit4::class)
class MainActivityTest {
    @Rule
    @JvmField
    var mActivityTestRule = ActivityTestRule(MainActivity::class.java)

    lateinit var context: Context
    lateinit var mainActivity: MainActivity
    lateinit var idlingResource: MainActivityIdlingResource
    private lateinit var myDevice: UiDevice
    private val sleepMedium: Long = 1000

    @Before
    fun setup() {
        context = InstrumentationRegistry.getInstrumentation().targetContext
        mainActivity = mActivityTestRule.activity
        myDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
        idlingResource = MainActivityIdlingResource(
            mActivityTestRule.activity.recyclerList,
            mActivityTestRule.activity.javaClass.simpleName
        )
        IdlingRegistry.getInstance().register(idlingResource)
    }

    @After
    fun teardown() {
        IdlingRegistry.getInstance().unregister(idlingResource)
    }

    /**
     * check swipe
     */
    @Test
    fun testSwipe() {
        myDevice.findObject(UiSelector().descriptionContains("recyclerList"))
            .swipeUp(2) //to scroll up
        waitTime(sleepMedium)
        myDevice.findObject(UiSelector().descriptionContains("recyclerList"))
            .swipeDown(2) //to scroll down
        waitTime(sleepMedium)
    }

enter image description here

like image 382
ir2pid Avatar asked Nov 15 '20 06:11

ir2pid


1 Answers

You have to use startKoin and set the context by using androidContext for your Class MainActivityTest

startKoin {
                androidLogger()
                
                // declare used Android context
                androidContext(this@MainActivityTest)
                
                // declare modules
                modules(listOf(module1, module2, ...))
            }

Also, try checking that have you registered the Application class in manifest file

<application
    android:name=".MainActivityTest"

If this also doesn't work, Upgrade. The Start context has been fixed to be more consistent.

like image 130
Sreeram Nair Avatar answered Oct 16 '22 23:10

Sreeram Nair