Java 使用Robotium进行生命周期测试:终止和重新启动活动

Java 使用Robotium进行生命周期测试:终止和重新启动活动,java,android,robotium,android-testing,Java,Android,Robotium,Android Testing,如何重新启动使用Robotium的solo.goBack()结束的活动? 以下情况不会重新启动活动:(测试正常完成) 如何重新启动由Solo.goBack()结束的活动 那么问题呢 解决Robotium中两个活动之间的更改,而不是解除固定和重新启动 处理一项服务,而不是一项活动(且未答复) 询问如何手动重新启动活动,但回答方式不同 最小示例 要复制这样的最小测试,请创建一个项目及其测试项目: android create project -t 1 -p testRestart -k c

如何重新启动使用Robotium的
solo.goBack()
结束的活动?

以下情况不会重新启动活动:(测试正常完成)

如何重新启动由
Solo.goBack()
结束的活动

那么问题呢
  • 解决Robotium中两个活动之间的更改,而不是解除固定和重新启动
  • 处理一项服务,而不是一项活动(且未答复)
  • 询问如何手动重新启动活动,但回答方式不同
最小示例 要复制这样的最小测试,请创建一个项目及其测试项目:

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);
    }
    }
}
再次提出问题:如何重新启动一个以
Solo.goBack()
结束的活动?

正如@IHeartAndroid在to中所说的(我以前没有看到过它,在对“”的评论中有@Flavio Capaccio的链接):

工作。这是中的一个函数

(如果你想对这个答案投赞成票,也要投反对票)

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
launchActivity("com.testRestart", testactivity.class, null);