我想创建一个条件,在按下按钮时等待广播
现在我正在做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方法中发送的,我写了什么(不是怎么做,但是做什么)
答案 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中,您可以检查该标记是否已设置。然而,这不是一个好方法,因为您只是为了测试而添加更多代码。