Activity Test2

本文介绍如何使用ActivityUnitTestCase进行Android应用的单元测试,包括测试Intent信息的正确性等。通过具体示例展示了测试方法的编写过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


资源下载(免积分):下载

      activity的单元测试能够很好的验证activity的状态,和其他组件的交互(在孤立的情况下)。

一个单元测试通常时最小的代码单元(方法,类,组件)但不适合与系统复杂的UI交互,在这种情况下,

你应该使用 ActivityInstrumentationTestCase2 。

       在测试activity前,你可以注入mock Context和Appleication,可以孤立的运行activity测试,可以测试方法。

       注意: ActivityUnitTestCase和ActivityInstrumentationTestCase2不同,android Instrumentation不会自

                 动启动Activity,必须调用startActivity()方法来启动Activity。

      测试功能:在SendActivity中,当点击button时,会触发启动ReceiveActivity的Intent,下面就是测试

                       intent的信息是否正确


1. 继承ActivityUnitTestCase类
/*
 * ActivityUnitTestCase和ActivityInstrumentationTestCase2不同,
 * android Instrumentation不会自动启动Activity,
 * 必须调用startActivity()方法来启动Activity。
 */
public class SendActivityUnitTest extends 
                      ActivityUnitTestCase<SendActivity> 
2. 添加构造函数,这是必须的   

   //用于初始化测试用例,
    public SendActivityUnitTest() {
        /*
         * android能够利用SendActivity.class和AndroidManifest.xml
         * 中的instrumentation标签中的android:targetPackage属性可以获取要测试的类。
         */
        super(SendActivity.class);
   }

3. 添加setUp()方法,这个方法在每个测试方法之前调用

    /*
     * 在每个测试方法之前调用,用于清除以前测试或者变量的初始化
     *(在这里不能获取系统对象的引用,所以处理构造Intent,其他就没啥作用了)
     */
    @Override
    protected void setUp() throws Exception {
        // TODO Auto-generated method stub
        super.setUp();
        launchIntent = new Intent(getInstrumentation()
                .getTargetContext(), SendActivity.class);

    }
4. 简单测试初始化是否正确,必须在其他测试方法之前

    //预先测试,在正式测试前的简单测试^_^
    public void testPreconditions()
    {
        //启动activity
        startActivity(launchIntent,null,null);      
        Button button =(Button) getActivity()
                        .findViewById(R.id.sendButton); 
        EditText editText = (EditText) getActivity()
                        .findViewById(R.id.editText);
        /*
         *UI 测试看布局文件中是否包含button,editText,
         *ViewAsserts提供了一系列的方法用于测试UI       
         */
        ViewAsserts.assertOnScreen(getActivity() 
                        .findViewById(R.id.sendLayout), button);
        ViewAsserts.assertOnScreen(getActivity().findViewById(R.id.sendLayout)
                        , editText);
    }
5. 测试Intent的信息是否正确

 public void testLaunchReceiveActivityIntent()
    {
        //启动activity
        startActivity(launchIntent, null,null);
        //设置editText的内容
        EditText editText = (EditText) getActivity().findViewById(R.id.editText);
        editText.setText(message);
        Button button =(Button) getActivity().findViewById(R.id.sendButton);
        //Call this view's OnClickListene
        button.performClick();
        //获取启动ReceiveActivity的intent
        final Intent intent = getStartedActivityIntent();
        assertNotNull("Intent is null", intent);
        final String data = intent.getStringExtra(SendActivity.EXTRA);
        //验证启动的是不是ReceiveActivity
        String launchActivityName = intent.getAction();
        assertEquals("data don't matches",message, data);
    }

参考的资料:

      http://developer.android.com/training/activity-testing/index.html

      http://developer.android.com/tools/testing/activity_testing.html

     



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值