怎么说在注释UIThreadTest方法中waitForIdleSync()

时间:2012-11-09 10:15:22

标签: java android testing user-interface

在我的测试项目中,所有方法都没有注释UiThreadTest,优点是我可以执行点击和其他任何操作,然后等待getInstrumentation().waitForIdleSync();用于UI。但缺点是我的UI中的一个按钮打开一个对话框,在他的构造函数中调用getActivity() - 这个方法返回null,因为我的测试方法没有注释UIThreadTest,当我添加它然后对话框打开,但我无法使用waitForIdleSync

那么有没有等效代码来等待带有此注释的ui

1 个答案:

答案 0 :(得分:4)

根据我的经验,限制你对这个注释的使用是好的,我倾向于做的是运行任何需要与runiable中的Ui线程交互的代码,格式是:

getInstrumentation().runOnMainSync(new Runnable() {
    @Override
    public void run() {
        //code that needs to run on UI thread
    }
}); 

然后,您可以在执行任何操作之前和之后使用waitForIdleSync。