【问题标题】:How to instrumentation-test android system apps如何对安卓系统应用进行仪器测试
【发布时间】:2017-01-17 16:41:21
【问题描述】:

我搜索了这个问题,但没有找到答案。

假设有一个系统应用程序,它与android系统一起安装,例如拨号器应用程序。

现在我想对这个应用程序进行单元测试或仪器测试。我不想使用 AOSP Android.mk。有替代方法吗?例如我可以创建一个 gradle 项目来测试它吗?

【问题讨论】:

    标签: android unit-testing system instrumentation platform


    【解决方案1】:

    对于仪器测试,我个人创建了一个使用 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 和接口。

    我希望这会有所帮助。

    【讨论】:

    • 谢谢@abstractx1,这就是我正在研究的,稍后会更新
    • 它有效。有了它,我显示了电话应用程序,然后单击了拨号盘。
    • @wxi:如果您对这个答案感到满意,您能否接受这个答案,以便未来的用户看到这个问题?
    • 我点击了“UP”按钮,系统告诉我它被计算了但不会更新数字,因为总数小于15。
    【解决方案2】:

    您可以使用the UiAutomator system 测试任意应用,包括系统应用。但是,输入和输出是有限的。

    【讨论】:

      猜你喜欢
      • 2012-02-28
      • 1970-01-01
      • 2015-02-18
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多