沒有單元測試,何談重構

發表于: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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97