java - 使用 Robotium 进行生命周期测试 : Killing and Restarting Activity

标签 java android robotium android-testing

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

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

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

最佳答案

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

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

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

(如果您想赞成这个答案,请也赞成 his answer)

关于java - 使用 Robotium 进行生命周期测试 : Killing and Restarting Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30096491/

相关文章:

Android - setInfoWindowAdapter with WebView in google Marker (api v2)

android - 使用 Robotium Solo 4.0 更改系统时钟

android - 向eclipse添加jar文档

java - 仪器Java线程

java - 如何通过对值施加任何条件将 2 个 HashMap 添加到 1 个 HashMap

java - 调试由 docker 容器内的脚本调用的 java 应用程序

android - 从mysql错误填充android列表

java - Spring 的 GET 端点中的 ImmutableSet 与 AngularJS

java - Android:Java 与 Python

java - clickLongOnScreen(x,y) 和 clickLongOnView(v) 返回 "Injecting to another application requires INJECT_EVENTS permission"