其他测试框架 Android Instrumentation 判断跳转后的 Activity

xuxu · 2015年04月26日 · 最后由 陈恒捷 回复于 2015年04月27日 · 1657 次阅读

如果对 Instrumentation 有兴趣,可以看看。
至于被测应用,很简单,就是点击一个 button 跳转至另一界面,找了比较久的时间才找到判断 Activity 的方法,因此记录一下。

测试功能点

  • 在主界面MainActivity点击按钮Button,跳转至另一界面OtherActivity

测试方法

  • 使用Instrumentation,执行点击 Button 的动作,判断跳转后的界面的 Activity 是否为预期的 Activity
  • 使用ActivityMonitor,该类用来监控应用中的单个活动,可监控一些指定的意图。
  • 创建ActivityMonitor实例后,通过调用Instrumentation.addMonitor方法添加这个实例,当目标活动启动后,系统会匹配 Instrumentation 中的 ActivityMonitor 实例列表,如果匹配,就会累加计数器

测试代码

package com.example.demo.test;

import com.example.demo.MainActivity;

import android.app.Instrumentation.ActivityMonitor;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.Button;

public class MainActivityTest extends
    ActivityInstrumentationTestCase2<MainActivity> {

    private MainActivity mActivity;
    private Button button;

    public MainActivityTest() {
        super(MainActivity.class);
    }

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

        //启动待测应用并打开待测活动
        mActivity = getActivity();
        button = (Button) mActivity
                .findViewById(com.example.demo.R.id.button);
    }

    //测试Button
    public void testButton() {
        //跳转后的界面的Activity名为com.example.demo.OtherActivity
        ActivityMonitor am = getInstrumentation().addMonitor(
                "com.example.demo.OtherActivity", null, false);

        //点击操作运行在待测应用的线程中
        mActivity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                button.performClick();
            }
        });

        //设定等待满足要求的活动创建成功,最多等待5s
        am.waitForActivityWithTimeout(5000);
        //活动创建成功,am.getHits()值为1,否则为0
        assertEquals(1, am.getHits());
    }
}
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

要找到合适的方法确实比较花时间,大赞!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册