編輯:關於Android編程
我們在進行項目開發時,為了提高項目開發效率,方便項目測試中的局部代碼功能測試會用到單元測試。這樣就不用重新運行一遍整個項目。長期以此我們會就節省大量的時間去做其他的事。
首先來介紹一下如何進行單元測試:
A . 創建一個Android項目,我這裡為TestDemo;
B . 配置AndroidManifest
C . 創建測試Class與測試Activity
D . 創建Android Junit Test 與 Android Application
這是我的項目結構,並且創建了MainActivity,TestActivity ,TestClass
1.在AndroidManifest配置單元測試
代碼2 :
這裡需要注意targetPackage中的包名要與項目包名一致;我這裡都是com.example.testdemo
2.開始編寫測試代碼
MainActivity . class :
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { open(); } catch (Exception e) { e.printStackTrace(); } } public void open() throws Exception { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { String sdStatus = Environment.getExternalStorageState(); if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 檢測sd是否可用 Log.i("TestFile", "SD card is not avaiable/writeable right now."); return; } String name = new android.text.format.DateFormat().format( "yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg"; Toast.makeText(this, name, Toast.LENGTH_LONG).show(); Bundle bundle = data.getExtras(); Bitmap bitmap = (Bitmap) bundle.get("data");// 獲取相機返回的數據,並轉換為Bitmap圖片格式 FileOutputStream b = null; File file = new File("/sdcard/myImage/"); file.mkdirs();// 創建文件夾 String fileName = "/sdcard/myImage/" + name; try { b = new FileOutputStream(fileName); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把數據寫入文件 } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { b.flush(); b.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
這裡我調用了攝像頭的測試功能,是想展示單元測試如何在Activity進行並且是否可以測試硬件功能。
TestActivity .class :
public class TestActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { open(); } catch (Exception e) { e.printStackTrace(); } } public void open() throws Exception { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { String sdStatus = Environment.getExternalStorageState(); if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 檢測sd是否可用 Log.i("TestFile", "SD card is not avaiable/writeable right now."); return; } String name = new android.text.format.DateFormat().format( "yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg"; Toast.makeText(this, name, Toast.LENGTH_LONG).show(); Bundle bundle = data.getExtras(); Bitmap bitmap = (Bitmap) bundle.get("data");// 獲取相機返回的數據,並轉換為Bitmap圖片格式 FileOutputStream b = null; File file = new File("/sdcard/myImage/"); file.mkdirs();// 創建文件夾 String fileName = "/sdcard/myImage/" + name; try { b = new FileOutputStream(fileName); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把數據寫入文件 } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { b.flush(); b.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
TestClass.class :
public class TestClass extends AndroidTestCase { private List list; //這個方法是正常執行的 public void test_1() throws Exception { list = new ArrayList(); list.add("他們都說蔡睿智很帥,但他總覺得自己很丑"); list.add("他們都說蔡睿智是男神,但他總覺得自己是男生"); list.get(0); } //這個方法會拋出數組下標越界異常 public void test_2() throws Exception { list = new ArrayList(); list.add("蔡睿智不是男神"); list.add("蔡睿智是男生"); list.add("蔡睿智貌似是gay"); list.get(4); } //這個數組會拋出空指針異常 public void test_3() throws Exception{ List list = null; list.add("蔡睿智是彎的"); } }
然後右擊紅色框選的MainActivity,選中Run As選項來添加測試類。
這裡需要注意的是 Launch 這個選項即是我們要測的那個activity,這個是根據在AndroidManifest中的這段代碼來選擇的測試Activity的
接下來介紹Class的測試步驟:同樣的選中的TestClass,在Outline中右擊TestClass,選擇Run AS
Test_2的方法拋出了空指針的異常。
寫到這裡關於Android的單元測試都寫完了,歡迎大家提出自己的意見相互交流,共勉。
實現的效果圖,可左右滑動:一、先在將Gallery標簽放入:復制代碼 代碼如下:<?xml version=1.0 encoding=utf-8?&
1、概述 關於手機圖片加載器,在當今像素隨隨便便破千萬的時代,一張圖片占據的內存都相當可觀,作為高大尚程序猿的我們,有必要掌握圖片的壓縮,緩存等處理,以到達
轉眼時間一晃就過去了,從事Android開發已有一年多的時間,由於項目忙,一直沒時間更新,雖然筆記做了很多,但是一直沒時間總結,只是把很多開發遇到的坑和知識點記在筆記本。
Android Studio常用快捷鍵、Android Studio快捷鍵大全接下來這篇android studio使用教程,主要為大家介紹的是android studi