我正在使用Kotlin编程语言开发一个Android应用程序。我正在向我的应用程序中添加插装测试。现在我正在尝试测试活动是否在一些延迟后启动。
这是我的活动代码。
class MainActivity : AppCompatActivity() {
companion object {
val LAUNCH_DELAY: Long = 2000
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Handler().postDelayed({
this.startLoginActivity()
}, LAUNCH_DELAY)
}
protected fun startLoginActivity()
{
startActivity(Intent(this, LoginActivity::class.java))
}
}
我知道如何编写这样一个简单的测试
@Test
fun itRendersCompanyName() {
onView(withId(R.id.main_tv_company_name)).check(matches(withText("App Name")))
}
但我在这里尝试测试的是LoginActivity是否在一段延迟后启动。我如何使用Espresso框架来做这件事?
4条答案
按热度按时间xxe27gdn1#
您可以使用
ActivityManager
获取可见的“活动”:调用
isVisible<LoginActivity>()
将告诉您LoginActivity
是否可见。另外,要等到
LoginActivity
可见,可以等待此方法获取true
。例如:2uluyalo2#
您可以使用Intents.intended()来实现这一点。
将以下内容添加到您的build.gradle文件:
在测试函数中,可以尝试以下代码:
您可以阅读更多关于Espresso-Intents here的信息。
inb24sb23#
最好使用单元测试来测试这种状态。使用体系结构模式(例如MVP/MVVM),模拟演示者/视图模型,并检查触发了负责活动启动的方法
mutmk8jj4#
我使用以下代码使其工作:
请记住将“androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0'”添加到您的Gradle依赖项中