首页 > 解决方案 > IntentsRule 已弃用 Espresso

问题描述

我一直在BaseTest为 Espresso 使用类似这样的课程:

abstract class BaseTest<T : Activity> {

    val context: Context = InstrumentationRegistry.getInstrumentation().targetContext

    abstract fun getTestActivity(): IntentsTestRule<T>
    abstract fun startIntentActivity()

    @Rule
    @JvmField
    var activityTestRule = this.getTestActivity()

    fun launchActivity(intent: Intent?) {
        getTestActivity().launchActivity(intent)
    }

    @Before
    fun setUp() {
        startIntentActivity()
    }

    @After
    fun tearDown() {
        activityTestRule.finishActivity()
    }
}

但是现在我看到它abstract fun getTestActivity(): IntentsTestRule<T>已被弃用,我们应该使用ActivityScenario,我应该ActivityScenarioRule如何修改该类以使用新的类?

标签: androidkotlinandroid-espresso

解决方案


一般来说,一个人可以提供Intent浓缩咖啡 - 或ActivityScenarioRule

ActivityScenarioRule(Intent startActivityIntent)
构造具有给定意图的 ActivityScenarioRule。

在科特林:

lateinit var scenario: ActivityScenario<SomeActivity>
val intent = Intent(ApplicationProvider.getApplicationContext(), SomeActivity::class.java)

@get:Rule
val activityRule = activityScenarioRule<SomeActivity>(intent)

@Test
fun someTest() {
    scenario = rule.scenario
    scenario.onActivity { activity ->  
        ...
    }
}

@After
fun cleanup() {
    scenario.close()
}

推荐阅读