Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android Studio系列-Activity單元測試

Android Studio系列-Activity單元測試

編輯:關於android開發

Android Studio系列-Activity單元測試


前言

上一篇講的是如何在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 {

    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產生的概率,這裡面的好處恐怕真正了解單元測試的人才能明白,筆者也正在學習如何更好的提高開發效率,以後有更多的內容會繼續分享給大家。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved