簡單搭建環境,測試Android應用

來源:互聯網
上載者:User

標籤:測試android應用

如果你編寫完Android應用軟體,要進行一個測試,可以學習這個方法,具體內容如下所示:

用Eclipse建立測試

首先搭建測試環境:

  1. 下載安裝Eclipse ADT外掛程式

  2. 匯入或建立我們想要測試的Android應用項目。

  3. 產生一個對應於應用程式項目測試的測試專案。為匯入項目產生一個測試專案: a.在項目瀏覽器裡,右擊我們的應用項目,然後選擇Android Tools > New Test Project b.在建立Android測試專案面板,為我們的測試專案設定合適的參數,然後點擊Finish

上面環境搭建好後可以進入建立與執行測試案例:


建立一個測試案例

Activity測試都是通過結構化的方式編寫的。請務必把測試代碼放在一個單獨的包內,從而與被測試的代碼分開。

按照慣例,測試包的名稱應該遵循與應用程式套件名相同的命名方式,在應用程式套件名後接“.tests”。在建立的測試包中,為我們的測試案例添加Java類。按照慣例,測試案例名稱也應遵循要測試的Java或Android的類相同的名稱,並增加尾碼“Test”。

要在Eclipse中建立一個新的測試案例可遵循如下步驟:

a. 在Package Explorer中,右鍵點擊待測試工程的src/檔案夾,New > Package

b. 設定檔案夾名稱<你的包名稱>.tests(比如, com.example.android.testingfun.tests)並點擊Finish

c. 右鍵點擊建立的測試包,並選擇New > Calss

d. 設定檔案名稱<你的Activity名稱>Test(比如, MyFirstTestActivityTest),然後點擊Finish

建立測試資料集(Fixture)

測試資料集包含運行測試前必鬚生成的一些對象。要建立測試資料集,可以在我們的測試中覆寫setUp()和tearDown()方法。測試會在運行任何其它測試方法之前自動執行setUp()方法。我們可以用這些方法使得被測試代碼與測試初始化和清理是分開的。

在你的Eclipse中建立測試資料集:

1 . 在 Package Explorer中雙擊測試開啟之前編寫的測試案例,然後修改測試案例使它繼承ActivityTestCase的子類。比如:

public class MyFirstTestActivityTest        extends ActivityInstrumentationTestCase2<MyFirstTestActivity> {

2 . 下一步,給測試案例添加建構函式和setUp()方法,並為我們想測試的Activity添加變數聲明。比如:

public class MyFirstTestActivityTest        extends ActivityInstrumentationTestCase2<MyFirstTestActivity> {    private MyFirstTestActivity mFirstTestActivity;    private TextView mFirstTestText;    public MyFirstTestActivityTest() {        super(MyFirstTestActivity.class);    }    @Override    protected void setUp() throws Exception {        super.setUp();        mFirstTestActivity = getActivity();        mFirstTestText =                (TextView) mFirstTestActivity                .findViewById(R.id.my_first_test_text_view);    }}

建構函式是由測試用的Runner調用,用於初始化測試類別的,而setUp()方法是由測試Runner在其他測試方法開始前啟動並執行。

通常在setUp()方法中,我們應該:

  • setUp() 調用父類建構函式,這是JUnit要求的。

  • 初始化測試資料集的狀態,具體而言:

    • 定義儲存測試資料及狀態的執行個體變數

    • 建立並儲存正在測試的Activity的引用執行個體。

    • 獲得想要測試的Activity中任何UI組件的引用。

我們可以使用getActivity()方法得到正在測試的Activity的引用。

增加一個測試前提

我們最好在執行測試之前,檢查測試資料集的設定是否正確,以及我們想要測試的對象是否已經正確地初始化。這樣,測試就不會因為有測試資料集的設定錯誤而失敗。按照慣例,驗證測試資料集的方法被稱為testPreconditions()

例如,我們可能想添加一個像這樣的testPreconditons()方法:

public void testPreconditions() {    assertNotNull(“mFirstTestActivity is null”, mFirstTestActivity);    assertNotNull(“mFirstTestText is null”, mFirstTestText);}

Assertion(斷言,譯者注)方法源自於JunitAssert類。通常,我們可以使用斷言來驗證某一特定的條件是否是真的。

  • 如果條件為假,斷言方法拋出一個AssertionFailedError異常,通常會由測試Runner報告。我們可以在宣告失敗時給斷言方法添加一個字串作為第一個參數從而給出一些上下文詳細資料。

  • 如果條件為真,測試通過。

在這兩種情況下,Runner都會繼續運行其它測試案例的測試方法。

添加一個測試方法來驗證Activity

下一步,添加一個或多個測試方法來驗證Activity布局和功能。

例如,如果我們的Activity含有一個TextView,可以添加如下方法來檢查它是否有正確的標籤文本:

public void testMyFirstTestTextView_labelText() {    final String expected =            mFirstTestActivity.getString(R.string.my_first_test);    final String actual = mFirstTestText.getText().toString();    assertEquals(expected, actual);}

該 testMyFirstTestTextView_labelText() 方法只是簡單的檢查Layout中TextView的預設文本是否和strings.xml資源中定義的文本一樣。

注意:當命名測試方法時,我們可以使用底線將被測試的內容與測試案例區分開。這種風格使得我們可以更容易分清哪些是測試案例。

做這種類型的字串比較時,推薦從資源檔中讀取預期字串,而不是在代碼中硬性編寫字串做比較。這可以防止當資源檔中的字串定義被修改時,會影響到測試的效果。

為了進行比較,預期的和實際的字串都要做為assertEquals()方法的參數。如果值是不一樣的,斷言將拋出一個AssertionFailedError異常。

如果添加了一個testPreconditions()方法,我們可以把測試方法放在testPreconditions之後。

要參看一個完整的測試案例,可以參考本節樣本中的MyFirstTestActivityTest.java。

構建和運行測試

我們可以在Eclipse中的包瀏覽器(Package Explorer)中運行我們的測試。

利用如下步驟構建和運行測試:

  1. 串連一個Android裝置,在裝置或模擬器中,開啟設定菜單,選擇開發人員選項並確保啟用USB調試。

  2. 在包瀏覽器(Package Explorer)中,按右鍵測試類別,並選擇Run As > Android Junit Test

  3. 在Android裝置選擇對話方塊,選擇剛才串連的裝置,然後單擊“確定”。

  4. 在JUnit視圖,驗證測試是否通過,有無錯誤或失敗。


用Gradle version 建立測試
  1. 串連Android真機或開啟Android模擬器。

  2. 在項目目錄運行如下命令:

./gradlew build connectedCheck






簡單搭建環境,測試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.