zoukankan      html  css  js  c++  java
  • Android 使用Instrumentation进行界面的单元测试

    如果我们要对一个Activity界面上的一个按钮的点击事件进行单元测试,则可使用ActivityInstrumentationTestCase2类来进行测试。 
    首先我们定义一个测试类: 

    public class TestOneActivity extends 
             ActivityInstrumentationTestCase2<OneActivity> { 
         public TestOneActivity() { 
             super("com.hc.bai", OneActivity.class); 
         } 
    } 

    其中,OneActivity代表被测试的Activity,TestOneActivity()为该测试类的构造函数,super有两个参数,第一个是包名,我这为“com.hc.bai”。如果在你要测试的Activity的onCreate函数中,需要接受来自启动该Activity的页面传来的参数,可以在测试类中摸你传值,在这我们可以重写测试类的getActivity()函数,如下: 

    @Override 
         public OneActivity getActivity() { 
             OneActivity a; 
             Intent i = new Intent(); 
             Bundle b = new Bundle(); 
             b.putString("name", "sss"); 
             b.putString("id", "sss"); 
             // a = launchActivityWithIntent(targetPackage, OneActivity.class, 
             // i); 
             a = launchActivity(targetPackage, OneActivity.class, b); 
             setActivity(a); 
             System.out.println("getActivity--------------------------"); 
             return a; 
         } 

    通过在getActivity中执行launchActivityWithIntent或launchActivity,我们就可以将参数传递给被测试的Activity。在测试中,我们要对该界面上的一个Button进行测试,则我们还需要在Setup中定义该Button 

    private Button bt; 
    OneActivity one; 
    protected void setUp() throws Exception { 
             one = getActivity(); 
             bt = (Button) one.findViewById(R.id.bt_test); 
             System.out.println("setup********************"); 
    } 

    之后我们就可以完成我们的测试函数:

    public void testOne() { 
    one.runOnUiThread(new Runnable() { 
                 public void run() { 
                     //Looper.getMainLooper(); 
                     bt.performClick(); 
                 } 
             }); 
             
             getInstrumentation().waitForIdleSync(); 
              。。。 
    } 

    可以看到,我们需要在runOnUiThread中调用bt.performClick()事件,如果直接调用该事件,则程序会出现异常,getInstrumentation().waitForIdleSync()这一句是同步等待应用程序被闲置,之后,我们责可以写类似于assertEquals、assertTrue等函数。 

    本文转自:http://lxfgrace.iteye.com/blog/1609759

  • 相关阅读:
    MySQL 索引优化
    [转]多列索引
    abstract class和interface有什么区别? [转]
    PM knowledge
    委托应用场景[摘]
    Web 服务描述语言工具 (Wsdl.exe)[FROM msdn]
    C# 四个基本技巧[转]
    What are database states? [forward]
    学做程序经理[摘]
    SET IDENTITY_INSERT 学习心得[转]
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/4432347.html
Copyright © 2011-2022 走看看