android - 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
如何修改该类以使用新的类?
解决方案
一般来说,一个人可以提供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()
}
推荐阅读
- python - 从 Pandas 数据框中的列开始计数
- git - 如何使用一个帐户克隆 git repo,然后使用第二个帐户推送
- redis - REDIS AOF 文件大小连续翻倍
- javascript - 如何在弹出窗口上制作带有下一个和上一个按钮导航的模态滑块
- php - 如何解密 Transak 的 webhook 有效载荷?
- java - 为什么在 Spring 批量测试中需要 JobLauncherTestUtils 和 JobRepositoryTestUtils?
- vue.js - 将 Vuex 数据从 API 传递到表
- java - 如何创建其父函数不抛出任何错误的抛出异常函数
- docker - docker中暴露端口的Vuejs应用程序不起作用
- javascript - 将 div 移动到其他隐藏的 div 中