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;}