With Espresso I try to test sending an Activity to background, with the Home button and then getting it up in the foreground again to make some checks:
@EspressoTest
public void test() {
onSomeView().check(matches(isDisplayed()));
getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_HOME);
Context context = getInstrumentation().getTargetContext();
Intent intent = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
onSomeView().check(matches(isDisplayed()));
}
I had to use intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
which was suggested by an exception, but apart of that I also tested, starting it as the Launcher Activity, or using
FLAG_ACTIVITY_REORDER_TO_FRONT
, but the view is not visible. Even though the test passes.
You can do this using UI Automator (you can use both espresso and UI Automator together).
This backgrounded my app and brought it to the foreground
Ok I figured it out. First it is necessary to use the Activity Context provided by getActivity, and then I could use intents to send the activity in background and in foreground, using the HOME category and the FLAG_ACTIVITY_REORDER_TO_FRONT: