How is it possible to restart an activity that was ended using Robotium's solo.goBack()
?
The following does not restart the activity: (the test finishes ok)
solo.goBack();
try {
// recreate activity here
runTestOnUiThread(new Runnable() {
public void run() {
getInstrumentation().callActivityOnCreate(getActivity(),
null);
getInstrumentation().callActivityOnStart(getActivity());
getInstrumentation().callActivityOnResume(getActivity());
}});
}
How do you restart an Activity that was ended by Solo.goBack()
?
SO-questions
Minimal example
To reproduce a minimal test like this, create a project and its test project:
android create project -t 1 -p testRestart -k com.testRestart -a testactivity
cd testRestart
mkdir tests
cd tests
android create test-project -m .. -p .
Copy the Robotium jar to the tests/libs
folder.
Paste this code inside the file testactivityTest.java
:
package com.testRestart;
import android.test.ActivityInstrumentationTestCase2;
import com.robotium.solo.Solo;
public class testactivityTest extends ActivityInstrumentationTestCase2<testactivity> {
private Solo solo;
protected void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}
public testactivityTest() {
super("com.testRestart", testactivity.class);
}
public void testDestroyAndRestart() {
solo.goBack();
try {
// recreate activity here
runTestOnUiThread(new Runnable() {
public void run() {
getInstrumentation().callActivityOnCreate(getActivity(),
null);
getInstrumentation().callActivityOnStart(getActivity());
getInstrumentation().callActivityOnResume(getActivity());
}});
} catch ( Throwable t ) {
throw new RuntimeException(t);
}
}
}
Inside the tests folder, do a
ant debug install
adb shell am instrument -w -e class com.testRestart.testactivityTest com.testRestart.tests/android.test.InstrumentationTestRunner
The question again: how can you restart an activity that was ended by Solo.goBack()
?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…