Android:多次运行一个应用程序



我想在我的Android应用程序中运行一堆测试。事情是:我想首先定义一些测试N,并使我的应用程序运行该次数,一个接一个。

这在Android中有点棘手,因为Activities的生命周期,但我们的目标是在最后一个测试结束后立即开始一个测试(再次执行应用程序)。

这可能吗?我试着阅读Android开发者测试部分,但我对这种技术是否可能实现我想要的东西有些怀疑。

另外,我想让每个测试用不同的变量值(不同的输入)执行,但这可能更棘手,所以…让我们专注于第一个问题:)

帮忙吗? ?由于

听起来你想要的是一种机制来重新启动你的Android应用程序编程(和优雅)。很多人可能会说这是不可能的,但是你可以实现这个机制。

基本流程为:

(1)完成()您的根活动。

(2)在onDestroy()你的根活动,调用startActivity(createMainLauncherIntent())。

(3) createMainLauncherIntent()的实现应该如下所示:

private Intent createMainLauncherIntent()
{
    Intent intent = new Intent();
    // To launch this activity as if it started from the launcher.
    intent.setClass(this, getClass());
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    return intent;
}
当然,onDestroy()应该有一个机制来避免'restart'的无限循环。

根Activity类的示例:
https://github.com/TakahikoKawasaki/nv-android-base/blob/master/src/main/java/com/neovisionaries/android/app/BaseRootActivity.java

实现'restart'机制的Android应用示例:
https://github.com/TakahikoKawasaki/nv-android-base-sample

你可以为你的应用运行任意数量的测试,你只需要指定有效的测试运行器。默认情况下,SDK提供了一个AndroidTestRunner,允许您在模拟器中运行应用程序的测试。

之后,您还可以使用另一个测试运行器,如robolelectric,它允许直接从您的IDE运行测试。

你可以在两种解决方案中运行尽可能多的测试,不需要在每次测试之间杀死和重新启动应用程序。尽管如此,这样做是非常低效和耗时的。

我不确定,但如果一个脚本女巫杀死你的应用程序,并重新启动它与新的输入,这可以存储在预初始化的db?Android ADB停止应用程序命令,如"force-stop"对于非根设备

您可以使用shell命令start和参数-e启动应用程序:

$ adb shell am start -n com.some.package/com.some.package.MainActivity -e key param

参数将进入onCreate方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Bundle extras = this.getIntent().getExtras();
    if(extras != null){
        String key = extras.getString("key");
    }
}

要在android上杀死应用程序,你需要有一个扎根的设备。下一个命令将终止应用程序:

$ adb shell ps | grep com.some.package | awk '{print $2}' | xargs adb shell kill

但是我确信标准的测试方法会更好。所以我建议你仔细阅读所有关于测试的Android文档

相关内容

  • 没有找到相关文章

最新更新