1

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

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

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

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

4

1 回答 1

0

我终于按照这里描述的方法。

我有一个类封装了所有的 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 文件)。如果我使用活动上下文,我将无法访问它们。

于 2014-03-11T21:13:26.770 回答