如何重新启动使用Robotium的solo.goBack()
?
以下内容不会重新启动活动:(测试完成还可以)
solo.goBack();
try {
// recreate activity here
runTestOnUiThread(new Runnable() {
public void run() {
getInstrumentation().callActivityOnCreate(getActivity(),
null);
getInstrumentation().callActivityOnStart(getActivity());
getInstrumentation().callActivityOnResume(getActivity());
}});
}
您如何重新启动由Solo.goBack()
结束的活动?
so-questions
- 用机器人测试活动流解决机器人中的两个活动之间的变化,而不是破坏和重新启动。
- 模拟Android杀戮和重新启动服务处理服务,而不是一项活动(并且没有解决)
- 活动不会在不同的测试中重新启动询问如何手动重新启动活动,但以不同的方式回答
最小示例
要重现这样的最小测试,创建一个项目及其测试项目:
android create project -t 1 -p testRestart -k com.testRestart -a testactivity
cd testRestart
mkdir tests
cd tests
android create test-project -m .. -p .
将机器人罐复制到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()
结束的活动?
正如@iheartandroid在对这个机器人问题的回答中所说(我以前从未见过,@flavio capaccio在评论"相关问题"的评论中有一个链接):
launchActivity("com.testRestart", testactivity.class, null);
有效。这是仪器测试中的功能。
(如果您想提高此答案,也请他的答案进行投票)