I cant find any good help on this. I have a simple activity with just a few buttons on and I need to test if they re-direct to the correct new page (activity).
public void testButton() {
button.requestFocus();
button.performClick();
}
I really have no idea beyond that. The tutorials are all very unhelpful in doing this :/
You need ActivityMonitor, it helps you moniotor newly opened activity during instrumentation, check out the pseudo code below:
public void testOpenNextActivity() {
// register next activity that need to be monitored.
ActivityMonitor activityMonitor = getInstrumentation().addMonitor(NextActivity.class.getName(), null, false);
// open current activity.
MyActivity myActivity = getActivity();
final Button button = (Button) myActivity.findViewById(com.company.R.id.open_next_activity);
myActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
// click button and open next activity.
button.performClick();
}
});
//Watch for the timeout
//example values 5000 if in ms, or 5 if it's in seconds.
NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5000);
// next activity is opened and captured.
assertNotNull(nextActivity);
nextActivity .finish();
}
NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5);
The parameter 5 which is mentioned in above answer's method is in milliseconds not in seconds. So if it is 5, sometimes testcase get failed Because in 5 milliseconds it can't load the next activity. So 5000 or 10000 milliseconds will definitely work better. In documentation they have given it in seconds But in fact it is in milliseconds. So following method will work better than above method.
NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 10000);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With