【发布时间】:2017-01-17 16:41:21
【问题描述】:
我搜索了这个问题,但没有找到答案。
假设有一个系统应用程序,它与android系统一起安装,例如拨号器应用程序。
现在我想对这个应用程序进行单元测试或仪器测试。我不想使用 AOSP Android.mk。有替代方法吗?例如我可以创建一个 gradle 项目来测试它吗?
【问题讨论】:
标签: android unit-testing system instrumentation platform
我搜索了这个问题,但没有找到答案。
假设有一个系统应用程序,它与android系统一起安装,例如拨号器应用程序。
现在我想对这个应用程序进行单元测试或仪器测试。我不想使用 AOSP Android.mk。有替代方法吗?例如我可以创建一个 gradle 项目来测试它吗?
【问题讨论】:
标签: android unit-testing system instrumentation platform
对于仪器测试,我个人创建了一个使用 uiautomator 的独立应用程序:https://developer.android.com/topic/libraries/testing-support-library/index.html#UIAutomator
这允许模拟用户:
@org.junit.Test
public void testCheckContact() throws InterruptedException {
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
assertThat(device, notNullValue());
device.pressHome();
Context context = InstrumentationRegistry.getInstrumentation().getContext();
Intent intent = context.getPackageManager().getLaunchIntentForPackage("systempackageName");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
...
...
PhoneActivityPage phoneActivityPage = new PhoneActivityPage();
phoneActivityPage.clickContacts();
assertEquals("Contacts", phoneActivityPage.getSelectedTab());
}
您可以在此独立测试项目的单独类中定义 PhoneActivityPage 和接口。
我希望这会有所帮助。
【讨论】:
您可以使用the UiAutomator system 测试任意应用,包括系统应用。但是,输入和输出是有限的。
【讨论】: