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

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

  • <strong id="5koa6"></strong>
  • iOS開發中的單元測試:URLManager中的測試用例解析(5)

    發表于:2013-11-12來源:sf作者:gaosboy點擊數: 標簽:單元測試
    GHAssertEqualStrings(self.viewControllerA.query[@k1], @v1, @param error.); GHAssertEqualStrings(self.viewControllerA.query[@k2], @v2, @param error.); } - (void)testViewControllerForURLAndQuery { self.

      GHAssertEqualStrings(self.viewControllerA.query[@"k1"], @"v1", @"param error.");

      GHAssertEqualStrings(self.viewControllerA.query[@"k2"], @"v2", @"param error.");

      }

      - (void)testViewControllerForURLAndQuery

      {

      self.viewControllerA = (ViewControllerA *)[self.navigator

      viewControllerForURL:

      [NSURL URLWithString:@"um://viewa?p1=v1&p2=v2"]

      withQuery:@{@"k1":@"v1", @"k2":@"v2"}];

      HC_assertThat([self.viewControllerA.params allKeys], HC_containsInAnyOrder
    (@"p1", @"p2", nil));

      GHAssertEqualStrings(self.viewControllerA.params[@"p1"], @"v1", @"param error.");

      GHAssertEqualStrings(self.viewControllerA.params[@"p2"], @"v2", @"param error.");

      HC_assertThat([self.viewControllerA.query allKeys], HC_containsInAnyOrder
    (@"k1", @"k2", nil));

      GHAssertEqualStrings(self.viewControllerA.query[@"k1"], @"v1", @"param error.");

      GHAssertEqualStrings(self.viewControllerA.query[@"k2"], @"v2", @"param error.");

      }

      代碼16,測試通過URL生成UMViewController的用例

      一個測試方法多次斷言

      除了一個操作需要多個測試方法的情況,在同一個測試方法中也會有對一個結果進行多次斷言的情況(上述用例代碼16中已經是這種情況,一下用例更具代表性)。這種情況發生在操作結果較為復雜的情況下,例如生成一個UMNavigationController(代碼17)就是這種情況:UMNavigationController的初始化方法是帶RootViewController參數的,所以初始化的實例除了判斷其本身是否為UINavigationController的子類和UMNavigationController實例外,還要判斷rootViewController的合法性,以及viewControllers數組的正確性。

      (void)testInitWihtRootViewControllerURL

      {

      UMNavigationController *navigator = [[UMNavigationController alloc]

      initWithRootViewControllerURL:[NSURL URLWithString:@"um://viewb"]];

      HC_assertThat(navigator, HC_instanceOf([UINavigationController class]));

      HC_assertThat(navigator, HC_isA([UMNavigationController class]));

      HC_assertThat(navigator.rootViewController,

      HC_instanceOf([UMViewController class]));

      HC_assertThat(navigator.rootViewController, HC_isA([ViewControllerB class]));

      HC_assertThatInteger(navigator.viewControllers.count, HC_equalToInteger(1));

      HC_assertThat(navigator.viewControllers,

      HC_hasInAnyOrder(HC_instanceOf([UMViewController class]), nil));

      HC_assertThat(navigator.viewControllers,

      HC_hasInAnyOrder(HC_isA([ViewControllerB class]), nil));

      HC_assertThat(navigator.viewControllers,

      HC_hasInAnyOrder(HC_is(navigator.rootViewController), nil));

      }

      代碼17,測試生成UMNavigationController的用例

      總結

      本文一共取了URLManager中的17段代碼片段作為例子,介紹了從利用測試框架提供的斷言方法進行簡單的測試,一直到使用自定義匹配引擎規則創建較復雜測試用例,并且提到了部分測試引擎和匹配引擎使用過程中會遇到的陷阱。旨在推動開發者能夠在開發過程中更簡單高效的使用單元測試,為提升代碼質量增加一份保障。讀者可以在URLManager的工程中閱讀更多的測試用例代碼。

    原文轉自:http://blog.segmentfault.com/gaosboy/1190000000270521

    老湿亚洲永久精品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>