使用机器人进行生命周期测试:杀戮和重新启动活动



如何重新启动使用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);

有效。这是仪器测试中的功能。

(如果您想提高此答案,也请他的答案进行投票)

最新更新