編輯:關於Android編程
上一篇講的是如何在Android Studio中進行Junit單元測試,這篇來簡單記錄一下如何針對Activity進行單元測試。
我這裡新建一個UnitTestDemo項目
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);
}
}
代碼很簡單就不多解釋。
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產生的概率,這裡面的好處恐怕真正了解單元測試的人才能明白,筆者也正在學習如何更好的提高開發效率,以後有更多的內容會繼續分享給大家。
系統版本:Android 4.2.2_r1 本文主要是在Android中添加思源字體的過程記錄。思源字體是Google和Adobe在2014.07.18發布的中文字體。
1.生命周期場景演示 : 切換到該Fragment11-29 14:26:35.095: D/AppListFragment(7649): onAttach11-29 1
一. AChartEngine 簡介 1. 項目地址 AChartEngine 簡介 : AChar
微信前不久已想告知大眾從3月1日起微信提現就要收取手續費。但是很多高富帥白富美在微信錢包中存在很多錢,如何避免提現被收取手續費?怎麼做到提現不收取手續費呢?
Android 程序所依賴一個Library程序B , B 程序中用到&