【问题标题】:Lifecycle Testing with Robotium: Killing and Restarting Activity使用 Robotium 进行生命周期测试:杀死和重新启动活动
【发布时间】:2015-05-07 09:03:57
【问题描述】:

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

以下不重启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 问题

小例子

要重现这样的最小测试,请创建一个项目及其测试项目:

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() 结束的活动?

【问题讨论】:

    标签: java android robotium android-testing


    【解决方案1】:

    正如@IHeartAndroid 在his answerthis robotium question 中所说的那样(我以前没见过,@Flavio Capaccio 在“related question”的评论中有一个链接):

    launchActivity("com.testRestart", testactivity.class, null);
    

    有效。这是InstrumentationTestCase中的一个函数。

    (如果你想为这个答案点赞,也可以点赞his answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多