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

淺談Android單元測試的作用以及簡單示例

 更新時間:2017年08月16日 09:00:05   作者:許佳佳233  
本篇文章主要介紹了淺談Android單元測試的作用以及簡單示例,具有一定的參考價值,有興趣的可以了解一下

前提概要

受人嫌棄的單元測試

對于單元測試這個知識點,其實很多開發(fā)者是不太接觸的,包括筆者,在實習之前也并未實用過單元測試,或者說并沒感受到單元測試的好處。

對于bug的調(diào)試,筆者之前更傾向于使用log和斷點調(diào)試,可以說會了這兩個,大部分的邏輯bug都能自己解決了。這兩個與看似臃腫的單元測試代碼相比更受大家的喜愛。

但是,使用log和斷點調(diào)試的前提是開發(fā)人員較少,甚至是單人開發(fā)的情況。如果我自己開發(fā),我完全可以每次都使用集成測試,我知道每一個功能會涉及哪些模塊的代碼,然后根據(jù)邏輯設(shè)置log或者斷點調(diào)試。

多人開發(fā)難以處理的問題

然而,如果是多人開發(fā)呢?每一個模塊的代碼很可能是由不同的人分開負責的,bug的產(chǎn)生由不同模塊共同產(chǎn)生。每一個模塊的代碼可能都比較復(fù)雜,產(chǎn)生bug后,閱讀其他人的模塊本身比較浪費時間,其次基本不可能讓你去修改其他人的代碼,這可能會破壞他人的代碼結(jié)構(gòu)。

而且錯誤可能也并不在其他人的代碼中,也可能是你們的交互方式有問題。產(chǎn)生bug的原因有太多,并且由單人直接log或者斷點調(diào)試難以處理,那么這種情況怎么辦呢?

單元測試就一定程度上處理了這種困難的情況:給每一個模塊加上單元測試,如果該模塊可以通過單元測試,就代表沒有問題。

在這種情況下,程序員們面對的問題不再是要讓整個項目到達理想的效果,而是讓自己所面對的單元測試可以通過。這樣就大大減少了多人開發(fā)中的交互成本。

簡單示例

主要就兩個文件:

這里寫圖片描述

package com.example.xujiajia_sx.myexpressotest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

  }

  public static int calculate(int a,int b){
    return a+b+1;
  }

}

package com.example.xujiajia_sx.myexpressotest;

import org.junit.Test;

import static org.junit.Assert.*;

/**
 * Created by xujiajia_sx on 2017/8/14.
 */

public class SimpleTest {

  @Test
  public void CalculateTest() throws Exception {
    assertEquals(4, MainActivity.calculate(1,2));
  }
}

這個例子是測試了MainActivity.calculate()方法??梢栽诓贿\行這個app的情況下直接通過按SimpleTest .CalculateTest()左邊的小三角測試,如下圖:

這里寫圖片描述

我們calculate()方法的邏輯是返回a+b+1,所以是4,最終不會報錯,如果我們把assertEquals中的4改成3,效果如下:

這里寫圖片描述

如圖,測試會直接報錯,并且定位到錯誤的那一行,然后我們就可以看到是MainActivity.calculate()輸出的值不等于3所造成的。

Assert方法

示例本身比較簡單,但是對于剛剛接觸單元測試讀者可能對assertEquals()比較陌生,這是Assert這個類中的靜態(tài)方法,單元測試中一般就是通過它來判斷是否達到理想的效果。

筆者此處使用了int之間的判斷,Assert中還有很多其他的用法,筆者可以去AndroidDevelpers上自己查看,此處為了方便,筆者為了方便就直接復(fù)制了。

static void assertEquals(boolean expected, boolean actual)

static void assertEquals(String message, long expected, long actual)

static void assertEquals(short expected, short actual)

static void assertEquals(String message, String expected, String actual)

static void assertEquals(String message, int expected, int actual)

static void assertEquals(Object expected, Object actual)

static void assertEquals(String message, boolean expected, boolean actual)

static void assertEquals(String expected, String actual)

static void assertEquals(String message, short expected, short actual)

static void assertEquals(String message, Object expected, Object actual)

static void assertEquals(char expected, char actual)

static void assertEquals(byte expected, byte actual)

static void assertEquals(double expected, double actual, double delta)

static void assertEquals(String message, char expected, char actual)

static void assertEquals(float expected, float actual, float delta)

static void assertEquals(String message, double expected, double actual, double delta)

static void assertEquals(String message, byte expected, byte actual)

static void assertEquals(String message, float expected, float actual, float delta)

static void assertEquals(long expected, long actual)

static void assertEquals(int expected, int actual)

static void assertFalse(String message, boolean condition)

static void assertFalse(boolean condition)

static void assertNotNull(Object object)

static void assertNotNull(String message, Object object)

static void assertNotSame(String message, Object expected, Object actual)

static void assertNotSame(Object expected, Object actual)

static void assertNull(String message, Object object)

static void assertNull(Object object)

static void assertSame(String message, Object expected, Object actual)

static void assertSame(Object expected, Object actual)

static void assertTrue(String message, boolean condition)

static void assertTrue(boolean condition)

static void fail(String message)

static void fail()

static void failNotEquals(String message, Object expected, Object actual)

static void failNotSame(String message, Object expected, Object actual)

static void failSame(String message)

static String  format(String message, Object expected, Object actual)

 總結(jié)

這篇文章主要介紹了Android單元測試的作用和簡單的示例。但是簡單的對方法的測試相信并不能滿足求知欲強烈的讀者。

下一篇文章筆者會講述android單元測試中對Activity的測試方法。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android Activity的生命周期與啟動模式全面解讀

    Android Activity的生命周期與啟動模式全面解讀

    雖然說我們天天都在使用Activity,但是你真的對Activity的生命機制完全了解了嗎?Activity的生命周期方法只有七個,但是其實那只是默認的情況。也就是說在其他情況下,Activity的生命周期可能不會是按照我們以前所知道的流程,這就要說到Activity的啟動模式
    2021-10-10
  • kotlin源碼結(jié)構(gòu)層次詳解

    kotlin源碼結(jié)構(gòu)層次詳解

    這篇文章主要為大家介紹了kotlin源碼結(jié)構(gòu)層次詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 深入Android HandlerThread 使用及其源碼完全解析

    深入Android HandlerThread 使用及其源碼完全解析

    這篇文章主要介紹了深入Android HandlerThread 使用及其源碼完全解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Android開發(fā)之Android.mk模板的實例詳解

    Android開發(fā)之Android.mk模板的實例詳解

    這篇文章主要介紹了Android開發(fā)之Android.mk模板的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Android自定義可循環(huán)的滾動選擇器CycleWheelView

    Android自定義可循環(huán)的滾動選擇器CycleWheelView

    Android自定義可循環(huán)的滾動選擇器CycleWheelView替代TimePicker/NumberPicker/WheelView,很實用的一篇文章分享給大家,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 了解Android OpenGLES2.0(一)

    了解Android OpenGLES2.0(一)

    OpenGLES2.0是一個功能強大,調(diào)用方便的底層圖形庫,這篇文章主要為大家詳細介紹了Android OpenGLES2.0的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • SimpleCommand框架ImageLoader API詳解(三)

    SimpleCommand框架ImageLoader API詳解(三)

    這篇文章主要為大家詳細介紹了SimpleCommand框架ImageLoader API,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Android應(yīng)用的Material設(shè)計中圖片的相關(guān)處理指南

    Android應(yīng)用的Material設(shè)計中圖片的相關(guān)處理指南

    這篇文章主要介紹了Android應(yīng)用的Material設(shè)計中圖片的相關(guān)處理指南,除了介紹新的方法外文中還給出了一些設(shè)計標準樣例僅供參考,需要的朋友可以參考下
    2016-04-04
  • Android定時開機的流程詳解

    Android定時開機的流程詳解

    這篇文章給大家分享了Android定時開機及其實現(xiàn)流程,對此知識點有興趣的朋友,可以學(xué)習參考下。
    2018-07-07
  • Android Binder入門學(xué)習筆記

    Android Binder入門學(xué)習筆記

    這篇文章主要給大家介紹了關(guān)于Android Binder入門學(xué)習的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-02-02

最新評論

资兴市| 合山市| 澜沧| 乌兰察布市| 秭归县| 河曲县| 临夏县| 新安县| 元朗区| 枣庄市| 岗巴县| 中超| 双峰县| 宽城| 女性| 宁化县| 琼中| 都兰县| 浦东新区| 越西县| 梅州市| 南投县| 乌兰察布市| 桐庐县| 高密市| 上林县| 平阴县| 兴义市| 巧家县| 佛教| 辽阳县| 丹阳市| 西乌珠穆沁旗| 辽宁省| 株洲市| 绥芬河市| 汉川市| 信宜市| 四会市| 图片| 日照市|