• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 沒有單元測試,何談重構

    發表于:2017-03-31來源:jianshu作者:溪石iOS點擊數: 標簽:重構
    最近科技公司流年不利,那邊與整個硅谷唱反調的川普逆襲上臺了,這邊特斯拉被評為美國最不可靠汽車品牌,據報道是因為特斯拉為Model X增加了過于復雜的功能(高科技多也怪我咯)

    最近科技公司流年不利,那邊與整個硅谷唱反調的川普逆襲上臺了,這邊特斯拉被評為美國最不可靠汽車品牌,據報道是因為特斯拉為Model X增加了過于復雜的功能(高科技多也怪我咯),如前門采用電動開啟方式,中排座椅實現了電動移動,所有這些功能整合在一個平臺上,導致可靠性下滑。通俗解釋下就是電動門有個小bug,電動座椅又有個小bug,一堆小bug最終導致的大bug,人命關天了,本篇就來談談軟件開發中避免小bug的技術:單元測試。

    本文將介紹以下內容:

    1.iOS開發中添加單元測試的方法。

    2.如何寫單元測試用例用例組。

    3.介紹單元測試的一些基礎概念。

    本篇作為重構的例子(想了解重構是什么,另參見他們總在說重構,不過是重寫 ),假設了一個視頻網站的電影點播系統,每次點擊播放就會收取費用,按電影種類不同,時段不同,則收費不同,最終計算出顧客的總消費,并計算積分。這個例子的類關系比較清晰易懂,用OC語言實現,iOS開發的童鞋看起來會比較親切,心急的童鞋可以跳過源碼部分,先看后面添加單元測試的部分準備測試工具,需要了解細節時再回頭看源碼。

    系統包含一個電影類,顧客類,及點播類,類關系如下圖所示:

    電影類

     

    //
    //  Movie.h
    //  RefactorDemo
    //
    //  Created by xishi on 16/10/29.
    //  Copyright ? 2016年 xs. All rights reserved.
    //

    typedef NS_ENUM(NSUInteger, MovieEnum) {
    MovieEnumChildrens = 2,
    MovieEnumRegular = 0,
    MovieEnumNewRelease = 1
    };

    @class Movie;
    @interface Movie : NSObject
    @property(nonatomic, copy) NSString *title;
    @property(nonatomic) int priceCode;

    - (id)initWithTitle:(NSString *)title
    priceCode:(int)priceCode;
    @end

     

     

    //
    //  Movie.m
    //  RefactorDemo
    //
    //  Created by xishi on 16/10/29.
    //  Copyright ? 2016年 xs. All rights reserved.
    //

    #import "Movie.h"

    @implementation Movie
    - (id)initWithTitle:(NSString *)title
    priceCode:(int)priceCode {
    self = [super init];
    if (self) {
    _title = title;
    _priceCode = priceCode;
    }
    return self;
    }
    @end

     

    點播類: 點播類定義了點播行為,關心點播了什么電影,及點播的時段,這些都影響最終收取的費用。

    原文轉自:http://www.jianshu.com/p/0b4fd636ad2c

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>