我想在我的Android应用程序中运行一堆测试。 问题是:我想首先定义一些测试 N ,然后让我的应用程序一次又一次地运行。
由于活动生命周期,它在Android中有点棘手,但目标是在最后一次停止后立即开始测试(再次执行应用程序)。
这可能吗?我尝试阅读Android Developers Testing section,但我对这种技术是否可能产生了一些疑问。
另外,我想让每个测试用不同的变量值(不同的输入)执行,但这可能更棘手,所以......让我们关注第一个问题:)
任何帮助?感谢
答案 0 :(得分:1)
您可以为您的应用程序运行任意数量的测试,您只需指定有效的测试运行器。默认情况下,SDK提供AndroidTestRunner,允许您在模拟器中为应用运行测试。
之后,您还可以使用另一个允许直接从IDE运行测试的Robolectric测试运行器。
您可以使用两种解决方案按需运行测试,无需在每次测试之间杀死并重新启动应用程序。尽管如此,这样做会非常低效和耗时。
答案 1 :(得分:1)
对我来说,你想要的是一种以编程方式(优雅地)重新启动Android应用程序的机制。很多人可能会说这是不可能的,但你可以实施这个机制。
基本流程是:
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;
}
实施'重启'的示例Android应用程序机制:
https://github.com/TakahikoKawasaki/nv-android-base-sample
答案 2 :(得分:0)
我不确定,但是一个脚本巫婆会杀死你的应用并再次使用新输入启动它,可以存储在预初始化的数据库中? 这里有一个如何杀死你的应用程序的链接:Android ADB stop application command like "force-stop" for non rooted device
答案 3 :(得分:0)
您可以使用shell
命令start
和参数-e
启动带有参数的应用:
$ adb shell am start -n com.some.package/com.some.package.MainActivity -e key param
Params将采用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上杀死app,你需要拥有root设备。下一个命令将终止app:
$ adb shell ps | grep com.some.package | awk '{print $2}' | xargs adb shell kill
但我确信标准测试方法会更好。因此,我建议您仔细阅读有关测试的所有Android文档。