最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android應(yīng)用開(kāi)發(fā)中單元測(cè)試分析

 更新時(shí)間:2015年12月23日 09:48:11   投稿:lijiao  
這篇文章主要介紹了Android應(yīng)用開(kāi)發(fā)中單元測(cè)試的作用,以及何為單元測(cè)試,深入學(xué)習(xí)Android應(yīng)用開(kāi)發(fā)中單元測(cè)試,需要的朋友可以參考下

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

單元測(cè)試方式一[基于應(yīng)用的工程上進(jìn)行單元測(cè)試]

根據(jù)上面的程序代碼結(jié)構(gòu)圖,例如我們要測(cè)試包 com.andyidea.demo 包中的 JUnitService.java 中的某個(gè)方法的正確性。例如該對(duì)象中有個(gè) add方法,計(jì)算兩個(gè)整型數(shù)據(jù)的和

package com.andyidea.demo; 
 
public class JUnitService { 
   
  public int add(int a, int b){ 
    return a+b; 
  } 
 
} 

然后我們?cè)贛yJnuitTest.java中編寫(xiě)單元測(cè)試代碼,[注意:該測(cè)試類一定要繼承 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)志出來(lái)需要配置的地方。

<?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;"> <!-- 代表把單元測(cè)試框架中的一些依賴庫(kù)引入進(jìn)來(lái) --> 
  <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;">  <!-- 代表配置單元測(cè)試框架的啟動(dòng)裝置,啟動(dòng)裝置有好幾個(gè)類,可以選擇,一般情況下我們使用上面這個(gè)。 
     targetPackage與上面的package相同,代表單元測(cè)試框架和當(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> 

最后,打開(kāi)eclipse中的outline窗口,其中會(huì)顯示單元測(cè)試類的所有的方法然后想要測(cè)試哪個(gè)方法,則在哪個(gè)測(cè)試方法上右鍵鼠標(biāo),選擇Run As,然后再選擇Android JUnit Test即可,如果是正常的,則會(huì)如下:

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

單元測(cè)試方式二:
其實(shí)這種方式更加簡(jiǎn)單,這種方式是單獨(dú)創(chuàng)建一個(gè)單元測(cè)試的工程來(lái)進(jìn)行測(cè)試。即創(chuàng)建一個(gè) Android Test Project ,然后選擇需要單元測(cè)試的項(xiàng)目就OK了,通過(guò)這種方式進(jìn)行單元測(cè)試的話就不用進(jìn)行上面的配置,其實(shí)創(chuàng)建這種工程的時(shí)候,默認(rèn)已經(jīng)幫我們配置好了,如何進(jìn)行測(cè)試和上面的方式一樣,在這里就不詳細(xì)講解了。

以上就是針對(duì)Android應(yīng)用開(kāi)發(fā)中單元測(cè)試進(jìn)行的詳細(xì)介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 如何使用Flutter實(shí)現(xiàn)生成二維碼

    如何使用Flutter實(shí)現(xiàn)生成二維碼

    這篇文章主要為大家詳細(xì)介紹了如何使用 Flutter 創(chuàng)建二維碼,并實(shí)現(xiàn)一些常見(jiàn)的自定義選項(xiàng),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • Flutter自定義下拉刷新時(shí)的loading樣式的方法詳解

    Flutter自定義下拉刷新時(shí)的loading樣式的方法詳解

    Flutter中的下拉刷新,我們通常RefreshIndicator,可以通過(guò)color或strokeWidth設(shè)置下拉刷新的顏色粗細(xì)等樣式,但如果要自定義自己的widget,RefreshIndicator并沒(méi)有暴露出對(duì)應(yīng)的屬性,那如何修改呢,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Android中LayoutInflater.inflater()的正確打開(kāi)方式

    Android中LayoutInflater.inflater()的正確打開(kāi)方式

    這篇文章主要給大家介紹了關(guān)于Android中LayoutInflater.inflater()的正確打開(kāi)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • android編程實(shí)現(xiàn)系統(tǒng)圖片剪裁的方法

    android編程實(shí)現(xiàn)系統(tǒng)圖片剪裁的方法

    這篇文章主要介紹了android編程實(shí)現(xiàn)系統(tǒng)圖片剪裁的方法,涉及Android針對(duì)圖片的獲取、修改、保存等操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Android高級(jí)動(dòng)畫(huà)篇之SVG矢量動(dòng)畫(huà)范例

    Android高級(jí)動(dòng)畫(huà)篇之SVG矢量動(dòng)畫(huà)范例

    矢量動(dòng)畫(huà)即是在計(jì)算機(jī)中使用數(shù)學(xué)方程來(lái)描述屏幕上復(fù)雜的曲線,利用圖形的抽象運(yùn)動(dòng)特征來(lái)記錄變化的畫(huà)面信息的動(dòng)畫(huà),本篇帶你了解在Android中的矢量動(dòng)畫(huà)
    2021-11-11
  • Android App中使用SurfaceView制作多線程動(dòng)畫(huà)的實(shí)例講解

    Android App中使用SurfaceView制作多線程動(dòng)畫(huà)的實(shí)例講解

    這篇文章主要介紹了Android App中使用SurfaceView制作多線程動(dòng)畫(huà)的實(shí)例講解,SurfaceView經(jīng)常被用來(lái)制作游戲中的動(dòng)畫(huà),不過(guò)同時(shí)要注意畫(huà)面閃爍的問(wèn)題,需要的朋友可以參考下
    2016-04-04
  • 解決Android軟鍵盤(pán)彈出覆蓋h5頁(yè)面輸入框問(wèn)題

    解決Android軟鍵盤(pán)彈出覆蓋h5頁(yè)面輸入框問(wèn)題

    之前我們?cè)谑褂胿ue進(jìn)行 h5 表單錄入的過(guò)程中,遇到了Android軟鍵盤(pán)彈出,覆蓋 h5頁(yè)面 輸入框 問(wèn)題,在此進(jìn)行回顧并分享給大家,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • Kotlin實(shí)現(xiàn)圖片選擇器的關(guān)鍵技術(shù)點(diǎn)總結(jié)

    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過(guò)程中的一個(gè)練手項(xiàng)目,非常適合學(xué)習(xí)Kotlin的時(shí)候參考,需要的朋友可以參考下
    2021-09-09
  • Flutter與WebView通信方案示例詳解

    Flutter與WebView通信方案示例詳解

    這篇文章主要為大家介紹了Flutter與WebView通信方案示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • AndroidStudio插件GsonFormat之Json快速轉(zhuǎn)換JavaBean教程

    AndroidStudio插件GsonFormat之Json快速轉(zhuǎn)換JavaBean教程

    這篇文章主要介紹了AndroidStudio插件GsonFormat之Json快速轉(zhuǎn)換JavaBean教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04

最新評(píng)論

靖宇县| 枣庄市| 尼玛县| 晴隆县| 灵璧县| 乌鲁木齐市| 阿尔山市| 通道| 治县。| 浑源县| 连州市| 杂多县| 吉林省| 阜南县| 新泰市| 连平县| 理塘县| 桐梓县| 普兰县| 六盘水市| 大渡口区| 华亭县| 斗六市| 新平| 乌鲁木齐县| 南平市| 浮梁县| 铜陵市| 石台县| 大石桥市| 聊城市| 漳州市| 鄂尔多斯市| 如东县| 东光县| 关岭| 聂荣县| 新沂市| 军事| 库尔勒市| 镇雄县|