編輯:關於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{ 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
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
標志著一個測試運行的大型測試的一部分
總結:用上面簡單介紹的測試方法就可以建立適合我們的單元測試(測試代碼中可能性最小的代碼塊)和功能測試(驗證單個應用組件是否與使用者期望的那樣與其它組件協同工作)
庫項目的結構一個庫項目是一個包含了源碼和資源的項目,它可以被其他的項目引用,從而讓其他項目使用它包含的代碼和資源。多個Android應用程序項目可以引用同一個庫項目,同一
看了很多大神們的文章,感覺受益良多,也非常欣賞大家的分享態度,所以決定開始寫Blog,給大家分享自己的心得。先看看效果圖:本來准備在ListView的每個Item的布局上
再看文章之前,希望大家先打開自己的微信點到朋友圈中去,仔細觀察是不是發現朋友圈裡的有個“九宮格”的圖片區域,點擊圖片又會跳到圖片的詳細查看頁面,並且支持圖片的滑動和縮放?
前言由於大部分android初級教程都沒教怎麼選擇時間,初學者碰到這種難免會有些不知所措,難道要讓用戶自己輸入日期時間?先不說用戶體驗不好,處理用戶輸入各式各樣的日期格式