如何解决片段测试,我错过了等同于ActivityScenarioRule
我习惯于通过在Espresso测试中启动包含它的Activity来测试我的片段。这已经很好地工作了,我已经能够通过添加到ActivityScenarioRule(或IntentsTestRule)中的一些测试规则(例如OkHttpIdlingResourceRule)来控制测试环境/执行,然后将其用于启动Activity。
现在,我正在朝着单一活动方法发展,并且还使用导航组件,我想开始隔离测试我的片段。但是,要做到这一点,我将需要与活动测试中存在的片段测试类似的功能。 ActivityScenarioRule实现TestRule,但FragmentScenario不实现,并且也不是FragmentScenarioRule。
我想念什么吗?
解决方法
实际上非常简单。在测试活动时,我有一个包含以下内容的基本测试类:
@Rule @JvmField
val activityRule: IntentsTestRule<*>
@Rule @JvmField
val chain: RuleChain
init {
activityRule = IntentsTestRule(
activityClass,true,// true if the Activity should be placed into "touch mode" when started
false) // launchActivity
var initChain = RuleChain.outerRule(firstRule)
.around(OkHttpIdlingResourceRule())
.around(activityRule)
for (rule in additionalTestRules) {
initChain = initChain.around(rule)
}
chain = initChain
}
在测试中,活动是使用activityRule.launchActivity(null)启动的 现在,当测试Fragments时:
@Rule
@JvmField
val chain: RuleChain
init {
var initChain = RuleChain.outerRule(firstRule)
.around(OkHttpIdlingResourceRule())
for (rule in additionalTestRules) {
initChain = initChain.around(rule)
}
chain = initChain
}
在测试中,片段通过launchFragmentInContainer()启动
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。