Android/Testing/Unit Testing/Delegate Finals

Methods such as 'showDialog()' are final, and cannot be overridden. Although Robolectric provides a means for you to change their implementation, it's sometimes convenient to use a simpler pattern - extending the class under test and overriding the new non-final method:

public class MyActivity extends Activity {

   public void onResume(Bundle bundle) {
      Intent intent = getIntent();
      int id = selectDialog(intent);
      boolean result = nonFinalShowDialog(id, bundle);
   }

   public boolean nonFinalShowDialog(int id, Bundle bundle) {
      return showDialog(id, bundle);
   }
}