沒有單元測試,何談重構(3)

發表于:2017-03-31來源:jianshu作者:溪石iOS點擊數: 標簽:重構
準備測試工具 這里選用的是XCTest,它是Xcode8中內置的測試框架,使用起來非常簡單,分以下兩種情況為項目添加測試: 1. 新建工程時添加單元測試 : 新

 

準備測試工具

這里選用的是XCTest,它是Xcode8中內置的測試框架,使用起來非常簡單,分以下兩種情況為項目添加測試:

1. 新建工程時添加單元測試

新建時添加單元測試

2.為已有工程添加單元測試

Xcode8中添加的步驟與前幾代有所不同:

添加Target

用關鍵詞test快速找到Unit Testing bundle

添加好單元測試后的工程結構

添加第一個測試

第一個測試是很重要的,它決定了我們后面測試的思路和方向,這里以需要什么測什么為指導原則,從結果出發,所以先來看下基本的點播需求

工作日點播一部普通影片,收費2元,積一分。

根據以上需求描述,我們在RefactorDemoTests.m添加測試方法

 

- (void)testStatement_Regular {
    Movie *matrixMovie1 = [[Movie alloc] initWithTitle:@"黑客帝國1"
                                             priceCode:MovieEnumRegular];
    Demand *aDemand1 = [[Demand alloc] initWithMovie:matrixMovie1
                                          timePeriod:TimePeriodEnumWorkDaytime];

// 顧客租賃一部:
Customer *aCustomer = [[Customer alloc] initCustomerWithName:@"溪石"];
[aCustomer addDemand:aDemand1];

XCTAssertTrue([@"溪石的點播清單\\\\n"
@"\\\\t黑客帝國1\\\\t2 元\\\\n"
@"費用總計 2 元\\\\n"
@"獲得積分 1"
isEqualToString:[aCustomer statement]],
@"測試點播一部普通電影");

}

 

這個測試用例中,顧客“溪石”點播了一部老片《黑客帝國1》,由于是工作日,因此按原價收取,并積1分,詳細細節看Cutomer類源碼中的方法statement()。 按快捷鍵?U,運行測試,發現測試報錯了:

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

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