机器人 - 等待活动的任务完成



我刚刚开始学习使用Robotium来测试我的应用程序。我编写了一个测试用例,用于重置统计信息列表,然后检查值是否等于 0。代码如下:

public void testClearStats() {
    solo.clickOnButton("Clear Stats");
    solo.clickOnButton("Yes");
    TextView views = (TextView) solo.getView(R.id.textViewsNum);
    TextView prompts = (TextView) solo.getView(R.id.textPromptsNum);
    TextView completions = (TextView) solo.getView(R.id.textCompleteNum);
    assertEquals("0", views.getText().toString());
    assertEquals("0", prompts.getText().toString());
    assertEquals("0", completions.getText().toString());
}

测试在不应该失败时失败,因为它在重置结果之前检查了 TextView 的值。为了解决这个问题,我添加了这一行:

solo.waitForActivity(solo.getCurrentActivity().toString());

有了这个声明,测试就通过了,但似乎需要不必要的很长时间才能完成。我想知道是否有更好/正确的方法可以做到这一点,或者这是最好的方法?

谢谢

你将不得不等待一些东西,你选择什么将取决于你的应用程序,如果不看它,我无法回答什么是最好的等待。

重置发生时有哪些可视指示器? 您是否打开了新活动?有文字说它已经完成吗?如果它实际上只是三个文本字段。如果是这样,那么您可能会设法使用 solo.waitfortext("0"),尽管更好的方法是使用条件的新概念并使用 solo.waitForCondition(method)(条件可能是等待文本为 0,但你会将条件放在一个地方,然后如果你后来找到更好的方法,那么你只需要更改它一次)。

public class WaitForReset implements Condition
{
    public boolean isSatisfied()
    {
        TextView views = (TextView) solo.getView(R.id.textViewsNum);
        TextView prompts = (TextView) solo.getView(R.id.textPromptsNum);
        TextView completions = (TextView) solo.getView(R.id.textCompleteNum);
        if(isViewZero(views) && isViewZero(prompts) && isViewZero(completions))
        {
            return true
        }
        else
        {
            return false;
        }
    }
    private isViewZero(TextView textView)
    {
        if((textView!=null) && (textView.getText().toString() ==0))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

然后,您可以断言等待条件的值为真!

您始终可以使用 waitForActivity 并选择特定的超时。solo.waitForActivity(YourActivity.class, timeout);

最新更新