Robotium Solo - 等待广播

时间:2015-01-22 14:04:49

标签: android robotium

我想创建一个条件,在按下按钮时等待广播 现在我正在做solo.sleep(10000) 但我不想一无所有地独自睡觉

如何制定条件"broadcast received"

好的解释
Robotium Solo是一个带有漂亮api的仪器框架

它有一个名为" solo.waitForCondition(Condition,int timeout)"

的方法

我想制定(制定一词意味着用正确的话说出我想说的话)

正确的条件会告诉我广播确实收到了 我想写一些代码(我不知道究竟是哪个)知道广播确实发送了

例如,如果我想知道按钮现在可见我会写

solo.waitForCondition(new Condition(){

public boolean isSatisfied(){

Button b = getActivity().findViewById(R.id.myButton);
return b.getVisibility() == View.VISIBLE;
}

}

现在回到我的问题 - 为了确保广播是在isSatisfied方法中发送的,我写了什么(不是怎么做,但是做什么)

1 个答案:

答案 0 :(得分:0)

如果你早点收到广播,我想你的意思是你不想睡10秒钟。你能做的是

long beginTime = new Date().getTime();
while (new Date().getTime() - beginTime  < 10000) {
    solo.sleep(500);
    if (conditionMet) {
        // Do something
        break;
    }
}

这样您就可以在较小的时间间隔内进行这些检查。

好的,所以实际上这或多或少是如何实现waitForCondition的。不幸的是,我不认为你可以用机器人监听事件。您可以做的是监视视图层次结构。在您的情况下,单击按钮时触发的视图应该有所不同,因此您需要在条件中检查(并且您的示例会这样做)。

如果您不想编辑正在测试的代码,那就是这样。如果您愿意更改代码,可以添加onClickListener(),并且可以将视图的标记设置为布尔值。稍后在robotium中,您可以检查该标记是否已设置。然而,这不是一个好方法,因为您只是为了测试而添加更多代码。