Robotium做为Android自动化测试框架,还有许多不完善的地方,也不能知足测试人员的全部要求。那么,本文以四个实际中碰到的问题为例,介绍改动Robotium源码的过程。框架
public boolean waitForActivity(String name, int timeout){
Activity currentActivity = activityUtils.getCurrentActivity(false);
final long endTime = SystemClock.uptimeMillis() + timeout;
while(SystemClock.uptimeMillis() < endTime){
if(currentActivity != null && currentActivity.getClass().getSimpleName().equals(name)) {
return true;
}
sleeper.sleep(MINISLEEP);
currentActivity = activityUtils.getCurrentActivity(false);
}
return false;
}
currentActivity.getClass().getSimpleName().equals(name)。因而,我把getSimpleName()改成getName(),这样之后使用solo.waitForActivity函数时,传入Activity的全名就好。
public void assertViewShown(String message, View view, int timeout)
{
asserter.assertViewShown(message, view, timeout);
}
public void assertViewShown(String message, View view, int timeout)
{
Assert.assertTrue(message, waiter.isViewShown(view, timeout));
}
public boolean isViewShown(View view, int timeout){
if(view == null)
return false;
long endTime = SystemClock.uptimeMillis() + timeout;
while (SystemClock.uptimeMillis() < endTime) {
if(view.isShown())
return true;
sleeper.sleep(MINISLEEP);
}
return false;
}