Android 上的自动化 UI 测试:前提条件和用户会话?

Posted

技术标签:

【中文标题】Android 上的自动化 UI 测试:前提条件和用户会话?【英文标题】:Automated UI Testing on Android: preconditions and user session? 【发布时间】:2014-02-25 03:53:01 【问题描述】:

我正在为我正在处理的 android 项目进行自动化 UI 测试。我选择 Espresso 来编写测试。我需要编写一个要求用户登录的 UI 测试。我该怎么做?

我已经看到了 testPrecionditions 方法的实现,但它们看起来太基础了,只负责检查视图的状态。

我还找到了一些 Calabash 测试的示例,但它们在运行所需的测试之前从头开始执行整个登录例程。我相信我可以通过编写极长的测试来复制这种行为,但对我来说似乎不合适。

我不熟悉的第三种选择是使用模拟对象通过返回模拟数据来模拟用户会话。但是,我不确定这是自动化 UI 测试的正确方法。

【问题讨论】:

【参考方案1】:

我终于采用了here 描述的方法。

我有一个类封装了所有的 API 调用,所以我只是创建了一个 Mock 类来在测试期间替换它。现在测试运行得更快,结果更可预测。

这是一个例子:

public class MyActivityTest extends ActivityInstrumentationTestCase2<MyActivity> 

    public DeregisterDeviceActivityTest() 
        super(DeregisterDeviceActivity.class);
    

    @Override
    protected void setUp() throws Exception 
        super.setUp();

        // Obtain instance of my mock API wrapper.
        IAPIWrapper api = MockAPIWrapper.getInstance(getInstrumentation().getContext()); 

        // Replace application's wrapper.
        MyApplication.setAPIWrapper(api);

        // Start activity.
        getActivity();
    

    ...


请注意,我使用检测上下文来实例化模拟对象。那是因为我需要访问作为测试项目一部分的资源(在这种情况下是带有响应样本的 json 文件)。如果我使用活动上下文,我将无法访问它们。

【讨论】:

以上是关于Android 上的自动化 UI 测试:前提条件和用户会话?的主要内容,如果未能解决你的问题,请参考以下文章

UI自动化和selenium相关以及八大定位

软件测试进阶之自动化测试——python+appium实例

自动化测试实施的前提条件

Android UI中英文自动显示问题

腾讯TMQ解放程序猿(媛)的双手—iOS UI自动化测试

selenium-自动化测试的前提