iOS開發中的單元測試(三)URLManager中的測試案例解析

來源:互聯網
上載者:User

URLManager是一個基於UINavigationController和UIViewController,以URL Scheme為設計基礎的導航控制項,目的是實現ViewController的松耦合,不依賴。

準備架構,定義基類

首先按照之前的兩篇文章介紹的方法匯入單元測試架構和匹配引擎架構,建立好測試Target,並配置編譯選項。

定義測試案例基類:UMTestCase(代碼1),其他用例全部繼承自UMTestCase。

#import <GHUnitIOS/GHTestCase.h>@interface UMTestCase : GHTestCase@end

代碼1,UMTestCase,用例基類

構建用例

URLManager工具類(UMTools)測試案例(UMToolsTestCase)。UMTools中擴充了NSURL,NSString和UIView,方法涉及到給URL添加QueryString和從QueryString中讀取參數,對字串做子串判斷,進行URL的編碼和解碼,對UIView的x,y,width和height的直接讀寫等。需要在用例中定義測試過程中會使用到屬性(代碼2), 並在setUpClass中初始化他們(代碼3)。

// 一般字元串,帶有字母和數字@property   (strong, nonatomic)     NSString    *string;// 一般字元串,僅帶有字母@property   (strong, nonatomic)     NSString    *stringWithoutNumber;// 將被做URLEncode的字串,含有特殊字元和漢字@property   (strong, nonatomic)     NSString    *toBeEncode;// 把 toBeEncode 編碼後的串@property   (strong, nonatomic)     NSString    *encoded;// 普通的URL,帶有QueryString@property   (strong, nonatomic)     NSURL       *url;// 去掉上邊一個URL的QueryString@property   (strong, nonatomic)     NSURL       *noQueryUrl;// 一個普通的UIView@property   (strong, nonatomic)     UIView      *view;

代碼2,定義屬性

(void)setUpClass{    self.string                 = @"NSString For Test with a number 8848.";    self.stringWithoutNumber    = @"NSString For Test.";    self.toBeEncode             = @"~!@#$%^&*()_+=-[]{}:;\"'<>.,/?123qwe漢字";    self.encoded                = @"%7E%21%40%23%24%25%5E%26%2A%28%29_%2B%3D-%5B%5D%7B%7D%3A%3B%22%27%3C%3E.%2C%2F%3F123qwe%E6%B1%89%E5%AD%97";    self.url                    = [NSURL URLWithString:@"http://example.com/patha/pathb/?p2=v2&p1=v1"];    self.noQueryUrl             = [NSURL URLWithString:@"http://example.com/patha/pathb/"];    self.view                   = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 100.0f, 100.f)];}

代碼3,初始化屬性

使用單元測試架構中的斷言處理簡單用例

單元測試是白盒測試,要做到路徑覆蓋(代碼4)。 對“ContainsString”的測試進行正向和反向兩種情況(即YES和NO兩種返回結果)。

#pragma mark - UMString- (void)testUMStringContainsString{    NSString *p = @"For";    NSString *np = @"BAD";    GHAssertTrue([self.string containsString:p],                 @"\"%@\" should contains \"%@\".",                 self.string, p);    GHAssertFalse([self.string containsString:np],                  @"\"%@\" should not contain \"%@\".",                  self.string, p);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.