Android應(yīng)用開發(fā)中單元測試分析
本文主要和大家分享如何在Android應(yīng)用開發(fā)過程中如何進(jìn)行單元測試,個(gè)人在做項(xiàng)目的過程中,覺得單元測試很有必要,以保證我們編寫程序的正確性。下面我們先大概了解下單元測試,以及單元測試的作用。
單元測試(又稱為模塊測試)是針對程序模塊(軟件設(shè)計(jì)的最小單位)來進(jìn)行正確性檢驗(yàn)的測試工作。程序單元是應(yīng)用的最小可測試部件。在過程化編程中,一個(gè)單元就是單個(gè)程序、函數(shù)、過程等;對于面向?qū)ο缶幊蹋钚卧褪欠椒?,包括基類(超類)、抽象類、或者派生類(子類)中的方法。單元測試是由程序員自己來完成,最終受益的也是程序員自己??梢赃@么說,程序員有責(zé)任編寫功能代碼,同時(shí)也就有責(zé)任為自己的代碼編寫單元測試。執(zhí)行單元測試,就是為了證明這段代碼的行為和我們期望的一致。
其實(shí)我們每天都在做單元測試。你寫了一個(gè)函數(shù),除了極簡單的外,總是要執(zhí)行一下,看看功能是否正常,有時(shí)還要想辦法輸出些數(shù)據(jù),如彈出信息窗口什么的,這,也是單元測試,把這種單元測試稱為臨時(shí)單元測試。只進(jìn)行了臨時(shí)單元測試的軟件,針對代碼的測試很不完整,代碼覆蓋率要超過70%都很困難,未覆蓋的代碼可能遺留大量的細(xì)小的錯(cuò)誤,這些錯(cuò)誤還會互相影響,當(dāng)BUG暴露出來的時(shí)候難于調(diào)試,大幅度提高后期測試和維護(hù)成本,也降低了開發(fā)商的競爭力??梢哉f,進(jìn)行充分的單元測試,是提高軟件質(zhì)量,降低開發(fā)成本的必由之路。
對于程序員來說,如果養(yǎng)成了對自己寫的代碼進(jìn)行單元測試的習(xí)慣,不但可以寫出高質(zhì)量的代碼,而且還能提高編程水平。
要進(jìn)行充分的單元測試,應(yīng)專門編寫測試代碼,并與產(chǎn)品代碼隔離。我認(rèn)為,比較簡單的辦法是為產(chǎn)品工程建立對應(yīng)的測試工程,為每個(gè)類建立對應(yīng)的測試類,為每個(gè)函數(shù)(很簡單的除外)建立測試函數(shù)。
在Android應(yīng)用開發(fā)中有兩種方式可以進(jìn)行單元測試,下面分別展示這兩種單元測試的方法:
單元測試方式一: [基于應(yīng)用的工程上進(jìn)行單元測試]

根據(jù)上面的程序代碼結(jié)構(gòu)圖,例如我們要測試包 com.andyidea.demo 包中的 JUnitService.java 中的某個(gè)方法的正確性。例如該對象中有個(gè) add方法,計(jì)算兩個(gè)整型數(shù)據(jù)的和
package com.andyidea.demo;
public class JUnitService {
public int add(int a, int b){
return a+b;
}
}
然后我們在MyJnuitTest.java中編寫單元測試代碼,[注意:該測試類一定要繼承 AndroidTestCase類] 以驗(yàn)證程序結(jié)果是否是我們所期望的一致
package com.andyidea.jnuit;
import junit.framework.Assert;
import android.test.AndroidTestCase;
import com.andyidea.demo.JUnitService;
public class MyJnuitTest extends AndroidTestCase {
public void testAdd() throws Exception{
JUnitService js = new JUnitService();
int sum = js.add(1, 2);
Assert.assertEquals(3, sum);
}
}
同時(shí)我們還需要在 Manifest.xml 清單配置文件中配置下:以紅色標(biāo)志出來需要配置的地方。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.andyidea.demo"
android:versionCode="1"
android:versionName="1.0" >
<span style="color:#ff0000;"> <!-- 代表把單元測試框架中的一些依賴庫引入進(jìn)來 -->
<uses-sdk android:minSdkVersion="8" /></span>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
<activity
android:name="com.andyidea.demo.JUnitTestDemoActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<span style="color:#ff0000;"> <!-- 代表配置單元測試框架的啟動裝置,啟動裝置有好幾個(gè)類,可以選擇,一般情況下我們使用上面這個(gè)。
targetPackage與上面的package相同,代表單元測試框架和當(dāng)前應(yīng)用是處于同一個(gè)進(jìn)程中 -->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:label="Test for my app"
android:targetPackage="com.andyidea.demo"/></span>
</manifest>
最后,打開eclipse中的outline窗口,其中會顯示單元測試類的所有的方法然后想要測試哪個(gè)方法,則在哪個(gè)測試方法上右鍵鼠標(biāo),選擇Run As,然后再選擇Android JUnit Test即可,如果是正常的,則會如下:

如果有異?;蛘咤e(cuò)誤,則會出現(xiàn)如下情況:

單元測試方式二:
其實(shí)這種方式更加簡單,這種方式是單獨(dú)創(chuàng)建一個(gè)單元測試的工程來進(jìn)行測試。即創(chuàng)建一個(gè) Android Test Project ,然后選擇需要單元測試的項(xiàng)目就OK了,通過這種方式進(jìn)行單元測試的話就不用進(jìn)行上面的配置,其實(shí)創(chuàng)建這種工程的時(shí)候,默認(rèn)已經(jīng)幫我們配置好了,如何進(jìn)行測試和上面的方式一樣,在這里就不詳細(xì)講解了。
以上就是針對Android應(yīng)用開發(fā)中單元測試進(jìn)行的詳細(xì)介紹,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Flutter自定義下拉刷新時(shí)的loading樣式的方法詳解
Flutter中的下拉刷新,我們通常RefreshIndicator,可以通過color或strokeWidth設(shè)置下拉刷新的顏色粗細(xì)等樣式,但如果要自定義自己的widget,RefreshIndicator并沒有暴露出對應(yīng)的屬性,那如何修改呢,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
Android中LayoutInflater.inflater()的正確打開方式
這篇文章主要給大家介紹了關(guān)于Android中LayoutInflater.inflater()的正確打開方式,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
android編程實(shí)現(xiàn)系統(tǒng)圖片剪裁的方法
這篇文章主要介紹了android編程實(shí)現(xiàn)系統(tǒng)圖片剪裁的方法,涉及Android針對圖片的獲取、修改、保存等操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Android App中使用SurfaceView制作多線程動畫的實(shí)例講解
這篇文章主要介紹了Android App中使用SurfaceView制作多線程動畫的實(shí)例講解,SurfaceView經(jīng)常被用來制作游戲中的動畫,不過同時(shí)要注意畫面閃爍的問題,需要的朋友可以參考下2016-04-04
Kotlin實(shí)現(xiàn)圖片選擇器的關(guān)鍵技術(shù)點(diǎn)總結(jié)
這篇文章主要給大家介紹了關(guān)于Kotlin實(shí)現(xiàn)圖片選擇器的一些關(guān)鍵技術(shù)點(diǎn),這是一個(gè)我在學(xué)習(xí)Kotlin過程中的一個(gè)練手項(xiàng)目,非常適合學(xué)習(xí)Kotlin的時(shí)候參考,需要的朋友可以參考下2021-09-09
AndroidStudio插件GsonFormat之Json快速轉(zhuǎn)換JavaBean教程
這篇文章主要介紹了AndroidStudio插件GsonFormat之Json快速轉(zhuǎn)換JavaBean教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04

