Espresso 测试给出:没有配置 Koin 上下文。请使用 startKoin 或 koinApplication DSL

ir2*_*pid 6 android android-espresso android-junit

我正在运行一个 espresso uiautomator 测试,该测试在 android studio 上使用绿色运行 > 按钮时运行良好。(下图)

然而./gradlew connectedAndroidTest是给出一个错误:

No Koin Context configured. Please use startKoin or koinApplication DSL
Run Code Online (Sandbox Code Playgroud)

为什么它通过 android studio 而不是在 gradle 上运行?我该如何解决?

@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)
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Sre*_*air 3

您必须使用您的班级startKoin来使用和设置上下文androidContextMainActivityTest

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

另外,尝试检查您是否在清单文件中注册了应用程序类

<application
    android:name=".MainActivityTest"
Run Code Online (Sandbox Code Playgroud)

如果这也不起作用,请升级。开始上下文已得到修复,更加一致。