Android 3分鐘帶你入門開發測試
作者:Zhu Yifei
作為一名合格的開發人員,基本的開發測試能力必不可少,開發測試分單元測試和UI測試,透過開發測試可以減少開發人員自測時間,提升開發質量。本篇文章可以幫助初級開發人員快速瞭解開發測試,快速上手測試編碼。本篇文章同樣適用於應用軟體初級測試工程師,快速上手編碼測試用例。
一、Android 3分鐘帶你入門開發測試
在正式學習Android應用測試之前,我們先來了解以下幾個概念。
1、JUnit
JUnit是一個Java語言的單元測試框架。
2、Instrumentation
該框架基於JUnit,因此既可以直接使用Junit 進行測試。又其為Android 應用的每種元件提供了測試基類,因此也可以使用Instrumentation 來測試Android 元件。
Instrumentation和Activity有點類似,只不過Activity是需要一個介面的,而Instrumentation並不是這樣的,我們可以將它理解為一種沒有圖形介面的,具有啟動能力的,用於監控其他類(用Target Package宣告)的工具類。
3、Espresso
自動化測試使用Android的Instrumentation API,這些API的呼叫在一個與UI執行緒不同的執行緒中執行,因此,使用自動化方法測試使用者介面會導致嚴重的併發問題,進而產生不一致不可靠的測試結果。Google對這個問題的解決方案是Espresso,它是一個測試框架,能夠使UI測試在多執行緒環境中安全地執行,並移除了關於編寫測試的大部分樣板程式碼。
二、測試應用
AndroidJUnit基於JUnit,使得我們既可以在JVM上執行本地單元測試(local unit tests),也可以在Android裝置上進行儀器測試(instrumented tests)。測試程式碼的位置取決於您要編寫的測試的型別。Android Studio 為以下兩種測試型別提供了原始碼目錄(源集):
本地單元測試
- 位於 module-name/src/test/java/。
- 這些測試在計算機的本地 Java 虛擬機器 (JVM) 上執行。當您的測試沒有 Android 框架依賴項或當您可以模擬 Android 框架依賴項時,可以利用這些測試來儘量縮短執行時間。
- 在執行時,這些測試的執行物件是去掉了所有 final 修飾符的修改版 android.jar。這樣一來,您就可以使用 Mockito 之類的常見模擬庫。
儀器測試
- 位於 module-name/src/androidTest/java/。
- 這些測試在硬體裝置或模擬器上執行。這些測試有權訪問 Instrumentation API,讓您可以獲取某些資訊(例如您要測試的應用的 Context), 並且允許您透過測試程式碼來控制受測應用。可以在編寫整合和功能 UI 測試來自動化使用者互動時,或者在測試具有模擬物件無法滿足的 Android 依賴項時使用這些測試。
- 由於儀器測試內建於 APK 中(與您的應用 APK 分離),因此它們必須擁有自己的 AndroidManifest.xml 檔案。不過,由於 Gradle 會自動在構建時生成該檔案,因此它在您的專案源集中不可見。您可以在必要時(例如需要為 minSdkVersion 指定其他值或註冊測試專用的執行偵聽器時)新增自己的清單檔案。構建應用時,Gradle 會將多個清單檔案合併成一個清單。
當您新建專案或新增應用模組時,Android Studio 會建立以上所列的測試源集,並在每個源集中加入一個示例測試檔案。您可以在project視窗中看到他們,如圖1-1所示:
(圖1-1)
新增一個新測試
在寫單元測試之前,務必確定gradle中做好相應的配置。如圖1-2所示:
(圖1-2)
接下來就正式入門啦,表激動,一步步來會很簡單哦~
1、建立一個本地單元測試
第一步 :開啟包含您想測試的程式碼的 Java 檔案。如Calculator.java。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 |
/** * [description] * author: yifei * created at 17/6/8 下午12:00 */ public
class
Calculator { public
double
sum(
double
a,
double
b){ return
a + b;
} public
double
substract(
double
a,
double
b){ return
a - b;
} public
double
divide(
double
a,
double
b){ return
a * b;
} public
double
multiply(
double
a,
double
b){ return
a / b;
} } |
第二步:點選您想測試的類或方法,然後右擊如圖2所示,或按 Ctrl+Shift+T (⇧⌘T)。
(圖2)
選擇create test如圖3所示,並選擇setUp/@Before和需要測試的方法,然後點選OK。
(圖3)
在 Choose Destination Directory 對話方塊中,點選與您想建立的測試型別對應的源集:androidTest 對應於儀器測試,test 對應於本地單元測試。然後點選 OK。如圖4所示:
(圖4)
這時在module-name/src/test/java/下出現了CalculatorTest.java。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 |
/** * [description] * author: yifei * created at 17/6/8 下午12:01 */ public
class
CalculatorTest { private
Calculator mCalculator; @Before public
void
setUp()
throws
Exception { mCalculator =
new
Calculator();
} @Test public
void
sum()
throws
Exception { //expected: 6, sum of 1 and 5 assertEquals(6d, mCalculator.sum(1d, 5d),
0
);
} @Test public
void
substract()
throws
Exception { assertEquals(1d, mCalculator.substract(5d, 4d),
0
);
} @Test public
void
divide()
throws
Exception { assertEquals(4d, mCalculator.divide(20d, 5d),
0
);
} @Test public
void
multiply()
throws
Exception { assertEquals(10d, mCalculator.multiply(2d, 5d),
0
);
} } |
此時選中方法名,右擊run'method()'。
(圖5)
於是一個本地單元測試就完成啦,是不是比較簡單呢?
2、建立一個Espresso測試
在建立測試之前,我們建立一個待測試的TestActivity.java,新增一下簡單的互動。在EditText中輸入任意字串,點選Button在TextView中顯示出來,如圖6、7所示:
(圖6)
(圖7)
為了照顧到更多小夥伴,這裡儘量寫的細點,對應的Activity/xml檔案如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 |
import
android.support.v7.app.AppCompatActivity; import
android.os.Bundle; import
android.support.v7.widget.Toolbar; import
android.view.View; import
android.widget.EditText; import
android.widget.TextView; public
class
TestActivity
extends
AppCompatActivity
implements
View.OnClickListener { private
TextView textView; private
EditText editText; @Override protected
void
onCreate(Bundle savedInstanceState) { super
.onCreate(savedInstanceState); setContentView(R.layout.activity_test); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); init();
} public
void
init(){ textView = (TextView) findViewById(R.id.textView); editText = (EditText) findViewById(R.id.editText); findViewById(R.id.btnText).setOnClickListener(
this
);
} @Override public
void
onClick(View view) { int
id = view.getId(); if
(id == R.id.btnText) { textView.setText(
"Hello, "
+ editText.getText().toString() +
"!"
);
}
} } |
做完以上工作後,我們一起來建立並執行Espresso測試。在module-name/src/androidTest/java/下建立TestActivityInstrumentationTest.java
測試類透過AndroidJUnitRunner執行,並執行button的onClick(View)方法。下面將逐行解釋都做了什麼:
- 首先,找到ID為editText的view,輸入Peter,然後關閉鍵盤;
- 接下來,點選Hello world!的View,我們既可以使用ID來找到一個控制元件,還可以透過搜尋它上面的文字來找到它;
- 最後,將TextView上的文字同預期結果對比,如果一致則測試透過;
你也可以右鍵點選域名執行測試,選擇Run> TestActivityInstrumentationTest...如圖8所示:
(圖8)
這樣就會在模擬器或者連線的裝置上執行測試,你可以在手機螢幕上看到被執行的動作(比如在EditText上打字)如下影片所示。
最後會在Android Studio輸出透過和失敗的測試結果。
(圖9)
最後恭喜你,你也入門了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912579/viewspace-2722922/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 5分鐘帶你入門apicloud,開發appAPICloudAPP
- 軟體測試員必備基礎:3分鐘帶你入門自動化測試!
- 嫌功能測試薪資太低崗位太Low?3分鐘帶你入門自動化測試!
- # 一篇文章帶你入門軟體測試
- 騰訊資深Android開發帶你入門面試重點Framework,掌握更加核心的技術!Android面試Framework
- 5分鐘帶你快速入門和了解 OAM Kubernetes
- Android跨平臺入門:手把手帶你快速入門Flutter!AndroidFlutter
- Android Things 開發入門Android
- Android自動化測試入門(四)單元測試Android
- Util應用框架快速入門(4) - 整合測試開發入門框架
- 【Android開發入門教程】三.Activity入門指南!Android
- Android測試工具 UIAutomator入門與介紹AndroidUI
- 5分鐘入門git模式開發Git模式
- 三分鐘帶你入門瞭解openstack的Nova專案
- 三分鐘帶你入門瞭解openstack的cinder專案
- 三分鐘帶你入門瞭解openstack的keystone專案
- 三分鐘帶你入門瞭解openstack的glance專案
- 帶你ECharts入個門Echarts
- 帶你高效入門 FlutterFlutter
- 3分鐘帶你看懂android的Binder機制Android
- Android Camera 開發你該知道的祕密㊙️-新手入門必備Android
- PHP 開發入門自動化測試歷程(一)PHP
- PHP 開發入門自動化測試歷程(二)PHP
- PHP 開發入門自動化測試歷程(三)PHP
- Mac之Android Studio開發NDK入門MacAndroid
- Android開發者的Flutter入門(二)AndroidFlutter
- Android開發者的Flutter入門(一)AndroidFlutter
- Cris 帶你快速入門 Flink
- 兩分鐘帶你快速搭建Flutter開發環境(Mac)Flutter開發環境Mac
- 一篇文章入門django開發 (測試平臺)Django
- Android開發知識:Dagger2入門Android
- 10分鐘極速入門dash應用開發
- 一文帶你入門LinuxLinux
- 12個例子帶你入門Electron
- 帶你入門RPC之反向代理RPC
- 一文帶你入門TransformerORM
- 一文帶你入門 GolangGolang
- 介面測試入門篇