• Android程序测试


    一、建立测试环境

    安装了Android Developer Tools (ADT) 插件的Eclipse将为你创建,构建,以及运行Android程序提供一个基于图形界面的集成开发环境。Eclipse的一项方便的特性是可以自动为你的Android应用项目创建一个对应的测试项目。

    1、建立一个Android工程(如下,名为AndroidNormalProject)、或者导入已经存在的工程。


    2、生成一个该工程对应的测试工程

    在工程上右击-->Android Tools-->New Test Project...


    二、创建与执行测试用例

    Activity都是通过结构化的方式编写的。请务必把你的测试代码放在一个单独的包内,从而与其它的正在测试的代码分开。

    按照惯例,你的测试包的名称应该遵循与应用包名相同的命名方式,在应用包名后接“.tests”。在你创建的测试包,为你的测试用例添加Java类。按照惯例,你的测试用例名称也应遵循你要测试的Java或Android的类相同的名称,但后缀为“Test”。

    1、新建测试包 和对应的测试用例名称(工程包名.test)

    工程包:


    测试包:


    2、建立测试夹具(Fixture)

    测试夹具由对象必须由一个或多个正在运行测试来初始化。要建立测试夹具,你可以在你的测试中重写setUp()和tearDown()方法。测试会在运行任何其它测试方法之前自动调用setUp()方法。你可以用这些方法来保持代码的测试初始化和清理是分开。

    import android.test.ActivityInstrumentationTestCase2;
    import android.widget.TextView;
    
    import com.example.androidnormalproject.MainActivity;
    import com.example.androidnormalproject.R;
    
    public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity>{
    
    	private MainActivity mMainActivity;
    	private TextView mTextView;
    
    	public MainActivityTest() {
    		super(MainActivity.class);
    	}
    	
    	@Override
    	protected void setUp() throws Exception {
    		super.setUp();
    		mMainActivity = getActivity();
    		if(mMainActivity == null) return;
    		mTextView = (TextView) mMainActivity.findViewById(R.id.helloword_text);
    	}
    	
    	@Override
    	protected void tearDown() throws Exception {
    		super.tearDown();
    		
    	}
    	
    }

    3、添加一个测试前提

    在正式测试之前,我们先保证测试的对象正确的实例化和初始化,添加一个testPreconditions()方法

    	public void testPreconditions() {
    	    assertNotNull("mMainActivity is null", mMainActivity);
    	    assertNotNull("mTextView is null", mTextView);
    	}
    4、添加一个测试方法验证Activity

    	public void testMainActivityTextView_helloword(){
    		final String expected = mMainActivity.getString(R.string.hello_world);
    		final String actual = mTextView.getText().toString();
    		assertEquals(expected, actual);
    	}

    5、运行测试

    Run As --> Android Junit Test

    三、测试UI组件

    1、测试一个Button的布局

    	/**
    	 * 测试Button的布局
    	 */
    	public void testMainActivityButton_layout(){
    		final View decorView = mMainActivity.getWindow().getDecorView();
    		//是否在屏幕内
    	    ViewAsserts.assertOnScreen(decorView, mButton);
    
    	    final ViewGroup.LayoutParams layoutParams =
    	            mButton.getLayoutParams();
    	    assertNotNull(layoutParams);
    	    //测试布局属性
    	    assertEquals(layoutParams.width, WindowManager.LayoutParams.MATCH_PARENT);
    	    assertEquals(layoutParams.height, WindowManager.LayoutParams.WRAP_CONTENT);
    	}
    2、验证按钮的行为

    	/**
    	 * 测试按钮点击事件
    	 */
    	public void testMainActivityButton_onClick(){
    		String expectedInfoText = mMainActivity.getString(R.string.button_text);
    	    TouchUtils.clickView(this, mButton);
    	    assertTrue(View.VISIBLE == mButton.getVisibility());
    	    assertEquals(expectedInfoText, mButton.getText());
    	}
    注意:上面的TouchUitl是将事件安全的从其他线程发送到UI线程,不应该将该方法用于UI线程中使用。

    3、应用测试的注释

    @SmallTest

    标志着一个测试运行的小型测试的一部分

    @MediumTest

    标志着一个测试运行的中等测试的一部分

    @LargeTest

    标志着一个测试运行的大型测试的一部分

    转载请说明出处:http://blog.csdn.net/dawanganban

    总结:用上面简单介绍的测试方法就可以建立适合我们的单元测试(测试代码中可能性最小的代码块)和功能测试(验证单个应用组件是否与使用者期望的那样与其它组件协同工作)

  • 相关阅读:
    PHP的资源类型
    windows 配置 apache的多个站点
    php 压缩数据存储
    php统计图类库JpGraph
    php之ThinkPHP的memcached类的修改
    linux 安装报错:pkg-config not found
    Mysql清空表(truncate)与删除表中数据(delete)的区别
    【MySQL】查看MySQL配置文件路径及相关配置
    phper
    http 同步异步请求
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468534.html
Copyright © 2020-2023  润新知