我有一个问题而且不知道如何解决它。我看到了一些用于Android应用程序自动化测试的工具,比如appium和其他。它们从设备外部连接到Android设备,模拟器并打开要测试的应用程序。我想知道如何构建一个可以同样的本机Android应用程序。打开另一个应用程序并开始在该应用程序的UI上执行不同的操作。举一个简单的例子,假设我有一个我想要测试的社交应用程序。我希望在手机上运行另一个打开我的社交应用程序并开始运行一些操作,如在应用程序内搜索,点击不同的帖子,喜欢帖子,s.o。有没有办法做到这一点?是否有任何框架或方法可以做到这一点?
问候。
答案 0 :(得分:2)
您有两种Android自动化框架。
仪表类:
用于功能测试的黑盒框架:
检测框架的工作方式如下:由于每个Android应用程序都在沙箱中运行,而其他应用程序在安装后无法更改其行为,因此基于检测的框架会更改应用程序注入挂钩的安装包。允许它们与应用程序交互的定义。这允许绕过Android系统中的沙箱。
其他三个都有UIAutomator
Android服务作为与应用程序交互的基础。 UIAutomator
是Android SDK的一部分,可以模拟真实用户的互动(例如点击,滚动等),而不是在较低的代码级别模拟它们。
我相信所列出的五个框架中的任何一个都可以让你实现你想要的。我个人推荐使用黑盒测试框架,因为仪器可以隐藏缺陷。我最喜欢的框架是ATMOSPHERE - 免费使用,开源,虽然最近很容易使用。
答案 1 :(得分:1)
您将使用显式意图打开单独的应用程序。
public void openApplication(Context context, String packageName) {
PackageManager manager = context.getPackageManager();
try {
Intent i = manager.getLaunchIntentForPackage(packageName);
if (i != null) {
i.addCategory(Intent.CATEGORY_LAUNCHER);
context.startActivity(i);
} else {
Log.e(TAG, "Unable to start application");
return;
}
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Package name not found");
return;
}
}
然后,您可以通过提供要打开的应用程序的上下文和包名称来调用此方法。例如,打开Instagram:
openApplication(this, "com.instagram.android");