我使用的是Android注释,我的活动中有以下代码:
@OptionsItem
void homeSelected() {
finish();
}
显然,当用户单击ActionBar中的home按钮时,这段代码应该完成当前活动。但是我该如何测试这个代码呢?我希望能够以某种方式验证,在单击主页按钮后,当前活动已完成,上一个活动已恢复。这可能吗?或者至少我可以验证我的homeSelected
方法是否在单击主页按钮后被调用?
我正在使用Robotium,我有以下测试方法:
@SmallTest
public void testGoBack() {
solo.clickOnActionBarHomeButton();
// ???? How do I verify the homeSelected method was actually called?
}
您可以使用waitForActivity(...)
。
waitForActivity(Class<? extends android.app.Activity> activityClass)
等待与指定类匹配的"活动"。
查看文档。
@SmallTest
public void testGoBack() {
solo.clickOnActionBarHomeButton();
solo.waitForActivity(com.example.UpActivity.class);
}
默认例程使用20秒的超时时间。
p.s.:或者,将调试日志添加到活动的onDestroy()
方法中:
public class MyActivity extends Activity {
...
@Override
protected void onDestroy() {
super.onDestroy();
Log.d ("TAG", "Finishing MyActivity");
}
}
并在您的测试方法中等待此日志消息:
waitForLogMessage("Finishing MyActivity");