Android測試架構初步

來源:互聯網
上載者:User

標籤:android   blog   http   io   os   ar   使用   java   for   

一、實驗目的

1.掌握android測試專案的建立

2.掌握android測試架構的基本內容

3.編寫運行android測試

二、實驗內容與步驟

 建立android項目MyProject,運行如下:

l  點擊ok按鈕,EditText內字母變大寫

l  點擊超連結,開啟瀏覽器上網

請用知識對本項目進行測試,要求:

1、對組件進行對齊測試(assertOnScreen和assertRightAligned方法)

2、對EditText進行傳值測試(使用sendKeys 和 sendRepeatedKeys兩種方法)

3、對Button進行功能測試(performClick和sendKeys方法)

4、對超連結進行測試(ActivityMonitor內部類)

5、為了保證測試的完整性和準確性,請適當添加必要的功能(如先決條件,多種方法等)

註:建立android測試專案過程如下

1、建立android測試專案

2、建立好測試專案之後,在測試專案中的src目錄下,右鍵點擊你建立的包,依次選擇建立—>JUnit Test Case,彈出如下介面:

 

 //代碼
package com.sise.zhw;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class MyProjectActivity extends Activity {    /** Called when the activity is first created. */private EditText mMessage;private Button mok;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mMessage=(EditText)findViewById(R.id.message);        mok=(Button)findViewById(R.id.ok);        mok.setOnClickListener(new OnClickListener(){public void onClick(View v){// TODO Auto-generated method stubmMessage.setText(mMessage.getText().toString().toUpperCase());}});    }}

//布局檔案

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" ><ImageView     android:layout_width="wrap_content"    android:id="@+id/imageView1"    android:layout_height="wrap_content"    android:src="@drawable/ic_launcher"    android:layout_marginBottom="6dip"    android:layout_gravity="center_horizontal"    android:layout_marginTop="20dip"    /><TextView     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="MyFirstProjectTest"    android:layout_gravity="center"    /><TextView     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="www.sise.com.cn"    android:layout_gravity="center"    android:autoLink="web"     android:id="@+id/link"    android:textSize="18sp"    /><EditText     android:layout_height="wrap_content"    android:layout_width="fill_parent"    android:layout_marginBottom="0dip"    android:layout_marginLeft="6dip"    android:layout_marginRight="6dip"    android:layout_marginTop="24dip"    android:hint="sise"    android:id="@+id/message"    android:maxLines="1"    /><Button     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="right"    android:layout_margin="6dip"    android:paddingLeft="24dip"    android:paddingRight="24dip"    android:text="ok"    android:id="@+id/ok"    /></LinearLayout>

  

//測試代碼
package com.sise.zhw.test;import static android.test.MoreAsserts.assertNotContainsRegex;import static android.test.ViewAsserts.assertOnScreen;import static android.test.ViewAsserts.assertRightAligned;import com.sise.zhw.MyProjectActivity;import android.app.Instrumentation;import android.app.Instrumentation.ActivityMonitor;import android.content.Intent;import android.content.IntentFilter;import android.test.ActivityInstrumentationTestCase2;import android.test.TouchUtils;import android.test.UiThreadTest;import android.view.KeyEvent;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MyFirstProjectActivityTests extendsActivityInstrumentationTestCase2<MyProjectActivity> {private MyProjectActivity mActivity;private EditText mMessage;private Button mCapitalize;private TextView mLink;private Instrumentation mInstrumentation;public MyFirstProjectActivityTests() {this("MyFirstProjectActivityTests");}public MyFirstProjectActivityTests(String name) {super(MyProjectActivity.class);setName(name);}protected void setUp() throws Exception {super.setUp();setActivityInitialTouchMode(false);mActivity = getActivity();mInstrumentation = getInstrumentation();mLink = (TextView)mActivity.findViewById(com.sise.zhw.R.id.link);mMessage = (EditText)mActivity.findViewById(com.sise.zhw.R.id.message);mCapitalize = (Button)mActivity.findViewById(com.sise.zhw.R.id.ok);}protected void tearDown() throws Exception {super.tearDown();}public void testPreConditions() {assertNotNull(mActivity);assertNotNull(mInstrumentation);assertNotNull(mLink);assertNotNull(mMessage);assertNotNull(mCapitalize);}public void testAlignment() {final int margin = 0;assertRightAligned(mMessage, mCapitalize, margin);}public void testUserInterfaceLayout() {final int margin = 0;final View origin = mActivity.getWindow().getDecorView();assertOnScreen(origin, mMessage);assertOnScreen(origin, mCapitalize);assertRightAligned(mMessage, mCapitalize, margin);}public void testUserInterfaceLayoutWithOtherOrigin() {final int margin = 0;View origin = mMessage.getRootView();assertOnScreen(origin, mMessage);origin = mCapitalize.getRootView();assertOnScreen(origin, mCapitalize);assertRightAligned(mMessage, mCapitalize, margin);}@UiThreadTestpublic void testNoErrorInCapitalization() {final String msg = "this is a sample";mMessage.setText(msg);mCapitalize.performClick();final String actual = mMessage.getText().toString();final String notExpectedRegexp = "(?i:ERROR)";assertNotContainsRegex("Capitalization found error:",                notExpectedRegexp, actual);}public void testFollowLink() {final Instrumentation inst = getInstrumentation();IntentFilter intentFilter = new IntentFilter(Intent.ACTION_VIEW);intentFilter.addDataScheme("http");intentFilter.addCategory(Intent.CATEGORY_BROWSABLE);ActivityMonitor monitor = inst.addMonitor(intentFilter, null, false);assertEquals(0, monitor.getHits());TouchUtils.clickView(this, mLink);monitor.waitForActivityWithTimeout(5000);assertEquals(1, monitor.getHits());inst.removeMonitor(monitor);}private void requestMessageFocus() {try {runTestOnUiThread(new Runnable() {public void run() {mMessage.requestFocus();}});} catch (Throwable e) {fail("Couldn‘t set focus");}mInstrumentation.waitForIdleSync();}public void testSendKeyInts() {requestMessageFocus();sendKeys(KeyEvent.KEYCODE_H,KeyEvent.KEYCODE_E,KeyEvent.KEYCODE_E,KeyEvent.KEYCODE_E,KeyEvent.KEYCODE_Y,KeyEvent.KEYCODE_ALT_LEFT,KeyEvent.KEYCODE_1,KeyEvent.KEYCODE_DPAD_DOWN,KeyEvent.KEYCODE_ENTER);final String expected = "HEEEY!";final String actual = mMessage.getText().toString();assertEquals(expected, actual);}public void testSendKeyString() {requestMessageFocus();sendKeys("H 3*E Y ALT_LEFT 1 DPAD_DOWN ENTER");final String expected = "HEEEY!";final String actual = mMessage.getText().toString();assertEquals(expected, actual);}public void testSendRepeatedKeys() {requestMessageFocus();sendRepeatedKeys(1, KeyEvent.KEYCODE_H,3, KeyEvent.KEYCODE_E,1, KeyEvent.KEYCODE_Y,1, KeyEvent.KEYCODE_ALT_LEFT,1, KeyEvent.KEYCODE_1,1, KeyEvent.KEYCODE_DPAD_DOWN,1, KeyEvent.KEYCODE_ENTER);final String expected = "HEEEY!";final String actual = mMessage.getText().toString();assertEquals(expected, actual);}public void testCapitalizationSendingKeys() {final String keysSequence = "T E S T SPACE M E";requestMessageFocus();sendKeys(keysSequence);TouchUtils.clickView(this, mCapitalize);final String expected = "test me".toUpperCase();final String actual = mMessage.getText().toString();assertEquals(expected, actual);}public void testActivityPermission(){final String PKG="com.sise.zhw";final String ACTIVITY=PKG+".MyContactsActivity";final String PERMISSION="android.MainFest.permission.CALL_PHONE";//assertActivityRequiresPermission(PKG,ACTIVITY,PERMISSION);}}

  

Android測試架構初步

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.