【问题标题】:how to know an activity lifecycle method has finished running如何知道一个活动生命周期方法已经完成运行
【发布时间】:2013-10-01 07:23:36
【问题描述】:

我正在使用 Robotium Solo 进行活动测试

在继续我的测试之前,我需要知道 onCreate 已完成运行

我可以让它休眠 5 秒,但这无济于事,因为我需要捕获 onStart 的第一行,并且 onCreate 每次在不同的时间结束

我如何告诉solo 等到onCreate 完成?

这就是我的代码的样子:

solo.sleep(5000);

    solo.clickOnButton("animate");
    solo.sleep(5000);

    solo.clickOnButton("close");
    solo.sleep(5000);

    solo.clickOnButton("animate");
    solo.sleep(5000);

    solo.clickOnButton("close");
    solo.sleep(5000);

    solo.clickOnButton("animate");
    solo.sleep(5000);

    solo.clickOnButton("close");
    solo.sleep(5000);

【问题讨论】:

    标签: android unit-testing robotium


    【解决方案1】:

    您可以添加另一种方法来搜索您的代码中的控件。例如:

    static boolean clickOnButton(String name, Solo solo){
        Button view = null;
        try{
                ArrayList<Button> temp = solo.getCurrentViews(Button.class);
                for (int i = 0; i < temp.size(); i++) {
                    if (temp.get(i).getText().toString().equals(name)){
                        view = temp.get(i);
                        break;
                    }
                }
                view.click();
                return true;
        } catch (Error err) {
                return false;
        } 
    }
    

    如果你确定按钮存在,你可以循环这样的搜索,添加一些标志,做do-while循环并根据条件更改标志

        if (view == null)
    

    【讨论】:

    • 这不是我的问题——我的观点是空的,但是这个答案确实回答了我的另一个问题——所以我还是接受了它;)谢谢!
    • 有solo.waitForActivity() 方法。尝试使用它来解决您的问题。我尝试过使用这种方法,但我的测试变得太慢了(对我来说,因为即使是额外的延迟秒对我来说也是不可接受的。大约需要 2 秒)。所以,也许它会等到 OnCreate() 完成。尝试一下)))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多