6

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

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

No Koin Context configured. Please use startKoin or koinApplication DSL

为什么它可以通过 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)
    }

在此处输入图像描述

4

2 回答 2

3

您必须通过使用您的类来使用startKoin和设置上下文androidContextMainActivityTest

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

另外,请尝试检查您是否在清单文件中注册了 Application 类

<application
    android:name=".MainActivityTest"

如果这也不起作用,请升级。Start 上下文已修复为更加一致。

于 2020-11-18T10:05:15.337 回答
1

您可能正在启动一个不会启动 Koin 配置的活动。

例如,如果您有两个活动,其中一个触发了 Koin init,那么如果您跳过一个初始化 Koin 的活动,您将收到类似这样的错误。

于 2020-11-20T12:52:01.440 回答