使用 Robotium 进行生命周期测试:终止和重启 Activity
Lifecycle Testing with Robotium: Killing and Restarting Activity
如何重新启动使用 Robotium 的 solo.goBack()
结束的 activity?
以下不重启activity:(测试结束ok)
solo.goBack();
try {
// recreate activity here
runTestOnUiThread(new Runnable() {
public void run() {
getInstrumentation().callActivityOnCreate(getActivity(),
null);
getInstrumentation().callActivityOnStart(getActivity());
getInstrumentation().callActivityOnResume(getActivity());
}});
}
如何重新启动由 Solo.goBack()
结束的 Activity?
SO 问题
- Testing activity flow with robotium
解决了 Robotium 中两个活动之间的变化,而不是破坏和重新启动。
- Simulate Android killing and restart service
与服务打交道,而不是 activity(并且无人回答)
- Activity doesn't restart in different tests with Robotium
询问如何手动重启 activity,但以不同的方式回答
最小示例
要重现这样的最小测试,请创建一个项目及其测试项目:
android create project -t 1 -p testRestart -k com.testRestart -a testactivity
cd testRestart
mkdir tests
cd tests
android create test-project -m .. -p .
将 Robotium jar 复制到 tests/libs
文件夹。
将此代码粘贴到文件 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);
}
}
}
在测试文件夹中,执行
ant debug install
adb shell am instrument -w -e class com.testRestart.testactivityTest com.testRestart.tests/android.test.InstrumentationTestRunner
问题又来了:如何重新启动由 Solo.goBack()
结束的 activity?
正如@IHeartAndroid 在his answer to this robotium question (I had not seen it before, there was a link by @Flavio Capaccio in a comment to a "related question") 中所说:
launchActivity("com.testRestart", testactivity.class, null);
有效。这是 InstrumentationTestCase.
中的函数
(如果你想给这个答案点赞,也请给 his answer 点赞)
如何重新启动使用 Robotium 的 solo.goBack()
结束的 activity?
以下不重启activity:(测试结束ok)
solo.goBack();
try {
// recreate activity here
runTestOnUiThread(new Runnable() {
public void run() {
getInstrumentation().callActivityOnCreate(getActivity(),
null);
getInstrumentation().callActivityOnStart(getActivity());
getInstrumentation().callActivityOnResume(getActivity());
}});
}
如何重新启动由 Solo.goBack()
结束的 Activity?
SO 问题
- Testing activity flow with robotium 解决了 Robotium 中两个活动之间的变化,而不是破坏和重新启动。
- Simulate Android killing and restart service 与服务打交道,而不是 activity(并且无人回答)
- Activity doesn't restart in different tests with Robotium 询问如何手动重启 activity,但以不同的方式回答
最小示例
要重现这样的最小测试,请创建一个项目及其测试项目:
android create project -t 1 -p testRestart -k com.testRestart -a testactivity
cd testRestart
mkdir tests
cd tests
android create test-project -m .. -p .
将 Robotium jar 复制到 tests/libs
文件夹。
将此代码粘贴到文件 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);
}
}
}
在测试文件夹中,执行
ant debug install
adb shell am instrument -w -e class com.testRestart.testactivityTest com.testRestart.tests/android.test.InstrumentationTestRunner
问题又来了:如何重新启动由 Solo.goBack()
结束的 activity?
正如@IHeartAndroid 在his answer to this robotium question (I had not seen it before, there was a link by @Flavio Capaccio in a comment to a "related question") 中所说:
launchActivity("com.testRestart", testactivity.class, null);
有效。这是 InstrumentationTestCase.
中的函数(如果你想给这个答案点赞,也请给 his answer 点赞)