在我的测试项目中,所有方法都没有注释UiThreadTest
,优点是我可以执行点击和其他任何操作,然后等待getInstrumentation().waitForIdleSync();
用于UI。但缺点是我的UI中的一个按钮打开一个对话框,在他的构造函数中调用getActivity()
- 这个方法返回null,因为我的测试方法没有注释UIThreadTest
,当我添加它然后对话框打开,但我无法使用waitForIdleSync
。
那么有没有等效代码来等待带有此注释的ui ?
答案 0 :(得分:4)
根据我的经验,限制你对这个注释的使用是好的,我倾向于做的是运行任何需要与runiable中的Ui线程交互的代码,格式是:
getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
//code that needs to run on UI thread
}
});
然后,您可以在执行任何操作之前和之后使用waitForIdleSync。