Android 测试未能运行到完成。原因:';由于';keyDispatchingTimedOut'';。查看设备日志以了解详细信息
正在尝试在初始化数据库时测试对话框的存在性。初始化过程由LocalBroadcasts标记 测试代码Android 测试未能运行到完成。原因:';由于';keyDispatchingTimedOut'';。查看设备日志以了解详细信息,android,kotlin,android-espresso,android-testing,androidx,Android,Kotlin,Android Espresso,Android Testing,Androidx,正在尝试在初始化数据库时测试对话框的存在性。初始化过程由LocalBroadcasts标记 测试代码 private var listActivity: ListActivity? = null @get:Rule val activityTestRule = ActivityTestRule<ListActivity>(ListActivity::class.java) @Before fun setUp() { listActivity = activityTestR
private var listActivity: ListActivity? = null
@get:Rule
val activityTestRule = ActivityTestRule<ListActivity>(ListActivity::class.java)
@Before
fun setUp() {
listActivity = activityTestRule.activity
}
@Test
fun testCheckActivityNotNull() {
Assert.assertNotNull(listActivity)
}
/**
* Test that we show a progress dialog while database init/migration is in process.
* Test that we remove that on db init/migration success
*/
@UiThreadTest
@Test
fun testCheckProgressBarShownOnBroadcast() {
Assert.assertNotNull(listActivity)
var dbIntent = Intent()
dbIntent.putExtra(DB_INIT_STATUS, DB_INIT_START)
dbIntent.action = DB_INIT_STATUS
LocalBroadcastManager.getInstance(ApplicationProvider.getApplicationContext()).sendBroadcast(dbIntent)
Espresso.onView(withText(R.string.please_wait)).check(matches(isDisplayed()))
Espresso.onView(withText(R.string.migrating_data)).check(matches(isDisplayed()))
Thread.sleep(5000) // keeping a waiting time to check the view
dbIntent = Intent()
dbIntent.putExtra(DB_INIT_STATUS, DB_INIT_END)
dbIntent.action = DB_INIT_STATUS
LocalBroadcastManager.getInstance(ApplicationProvider.getApplicationContext()).sendBroadcast(dbIntent)
Espresso.onView(withText(R.string.please_wait)).check(doesNotExist())
Espresso.onView(withText(R.string.migrating_data)).check(doesNotExist())
}
私有变量listActivity:listActivity?=无效的
@获取:规则
val activityTestRule=activityTestRule(ListActivity::class.java)
@以前
趣味设置(){
listActivity=activityTestRule.activity
}
@试验
趣味testCheckActivityNotNull(){
Assert.assertNotNull(listActivity)
}
/**
*测试在数据库初始化/迁移过程中显示一个进度对话框。
*测试我们是否在db init/migration success上删除了它
*/
@超线程测试
@试验
有趣的testCheckProgressBarShownOnBroadcast(){
Assert.assertNotNull(listActivity)
var dbIntent=Intent()
dbIntent.putExtra(DB_INIT_STATUS,DB_INIT_START)
dbIntent.action=DB_INIT_STATUS
LocalBroadcastManager.getInstance(ApplicationProvider.getApplicationContext()).sendBroadcast(dbIntent)
Espresso.onView(带文本(R.string.please_wait)).check(匹配项(isDisplayed()))
Espresso.onView(带文本(R.string.migrating_data)).check(匹配项(isDisplayed()))
Thread.sleep(5000)//保持等待时间以检查视图
dbIntent=Intent()
dbIntent.putExtra(DB_INIT_STATUS,DB_INIT_END)
dbIntent.action=DB_INIT_STATUS
LocalBroadcastManager.getInstance(ApplicationProvider.getApplicationContext()).sendBroadcast(dbIntent)
Espresso.onView(带文本(R.string.please_wait)).check(doesnotextist())
Espresso.onView(带文本(R.string.migrating_data)).check(doesNotExist())
}
我看不懂那只logcat。如果需要,可以分享
我最近从ActivityInstrumentationTestCase2
转到了androidx.test.rule.ActivityTestRule
,我的测试开始于testCheckProgressBarShownOnBroadcast
。我在ActivityInstrumentationTestCase2上时工作正常
错误keyDispatchTimeout
使我感觉测试不正确
编辑
“检测运行失败,因为在我尝试与UI交互时引发了“keyDispatchingTimedOut”
。否则,它将转到ANR。onView
可能会陷入死锁。您可以共享日志吗?