Android Studio系列-Activity單元測試

來源:互聯網
上載者:User

標籤:

前言

上一篇講的是如何在Android Studio中進行Junit單元測試,這篇來簡單記錄一下如何針對Activity進行單元測試。

建立一個項目

我這裡建立一個UnitTestDemo項目

建立LoginActivity、IndexActivty
package com.devilwwj.unittestdemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;/** * Created by wwj_748 on 2016/2/22.17.08 */public class LoginActivity extends Activity implements View.OnClickListener{    private Button loginButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_login);        loginButton = (Button) findViewById(R.id.btn_login);        loginButton.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_login:                Intent intent = new Intent(this, IndexActivity.class);                startActivity(intent);                finish();                break;        }    }}
public class IndexActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_index);    }}

代碼很簡單就不多解釋。

建立Activity單元測試類
package com.devilwwj.unittestdemo;import android.content.Intent;import android.test.ActivityUnitTestCase;import android.test.suitebuilder.annotation.MediumTest;import android.widget.Button;/** * Created by wwj_748 on 2016/2/22.17.12 */public class LoginActivityTest extends ActivityUnitTestCase<LoginActivity> {    private Intent mLoginIntent;    // 要這樣才不會報錯    public LoginActivityTest() {        super(LoginActivity.class);    }    @Override    protected void setUp() throws Exception {        super.setUp();        mLoginIntent = new Intent(getInstrumentation().getTargetContext(), LoginActivity.class);    }    @MediumTest    public void testLoginButton_labelTest() {        startActivity(mLoginIntent, null, null);        final Button loginButton = (Button) getActivity().findViewById(R.id.btn_login);        final String buttonText = getActivity().getString(R.string.login);//        String buttonText = "xxxx";        assertEquals("Unexpected button ladel text", buttonText, loginButton.getText());    }    @MediumTest    public void testLoginActivityMoveToIndex() {        startActivity(mLoginIntent, null, null);        final Button loginButton = (Button) getActivity().findViewById(R.id.btn_login);        // 測試Button的點擊事件        loginButton.performClick();        final Intent intent = getStartedActivityIntent();        // 去判斷是否為空白,如果為空白就說明跳轉失敗        assertNotNull("Intent was null", intent);        // 這一句是判斷你在跳轉後有沒調finish()        assertTrue(isFinishCalled());    }}

代碼解釋:繼承ActivityUnitTestCase類建立一個針對具體Activity的單元測試類,這裡只是針對LoginActiivty,其他Activity的測試也是類似的。裡面建立了兩個測試方法,testLoginButton_labelTest測試登入按鈕的文本是否跟期望的值一致,testLoginActivityMoveToIndex方法測試點擊按鈕之後的跳轉。

測試結果

操作。

最後

對於Android的單元測試,筆者瞭解的並不多,大家可以嘗試一下在自己項目添加功能模組的單元測試,單元測試主要是用來驗證邏輯的正確性,降低bug產生的機率,這裡面的好處恐怕真正瞭解單元測試的人才能明白,筆者也正在學習如何更好的提高開發效率,以後有更多的內容會繼續分享給大家。

歡迎關注公眾號:wwjblog

Android Studio系列-Activity單元測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.