Robolectric 尝试初始化时出现类型不匹配错误 Activity Android

Robolectric gives type mismatch error when trying to init Activity Android

我正在尝试在 robolectric 的帮助下初始化 MainActivity 实例。但是下面出现错误。

代码

@RunWith(RobolectricTestRunner::class)
class MainActivityTest {

    lateinit var mMainActivity: MainActivity

    @Before
    fun setUp() {
        // GIVEN
        val controller = buildActivity(MainActivity::class.java)

        // WHEN
        mMainActivity = buildActivity<MainActivity>(MainActivity::class.java)

    }
}

buildActivity 返回 ActivityController,而不是 Activity 本身。这允许您通过 start()resume()pause()destroy() 等方法控制 Activity 的生命周期。

为了获得 Activity 本身,只需在返回的 ActivityController 上调用 get()

因此您的代码如下所示:

import org.robolectric.android.controller.ActivityController
// other imports here

@RunWith(RobolectricTestRunner::class)
class MainActivityTest {

    lateinit var mMainActivity: MainActivity
    lateinit var mController: ActivityController<MainActivity>

    @Before
    fun setUp() {
        mController = buildActivity(MainActivity::class.java)

        mMainActivity = mController.get()

        // Optional, bring the Activity to whatever state you want
        mController.resume()
    }
}