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

發表于:2017-03-31來源:jianshu作者:溪石iOS點擊數: 標簽:重構
第一次運行測試報錯了 仔細檢查發現,statment()的實現中,總價與單位沒有空一格,斟酌后覺得還是空一格比較清晰,于是修改后,再次按快捷鍵?U運行測

第一次運行測試報錯了

仔細檢查發現,statment()的實現中,總價與單位沒有空一格,斟酌后覺得還是空一格比較清晰,于是修改后,再次按快捷鍵?U運行測試,測試通過:

測試通過了

在單元測試中,綠色表示測試通過,紅色表示測試失敗,已經成為業界標準,XCTest遵循了這一規則。

測試用例組

通過第一個例子,我們知道了測試用例總是以test開頭,作為約定俗成,凡是test開頭的方法,都會被XCTest框架自動運行,下面我們添加對周末點播優惠的測試:

 

- (void)testStatement_Weekend {
    Movie *matrixMovie2 = [[Movie alloc] initWithTitle:@"黑客帝國2-重裝上陣"
                                             priceCode:MovieEnumRegular];
    Demand *aDemand2 = [[Demand alloc] initWithMovie:matrixMovie2
                                          timePeriod:TimePeriodEnumWeekend];

Customer *aCustomer = [[Customer alloc] initCustomerWithName:@"溪石"];
[aCustomer addDemand:aDemand2];
XCTAssertTrue([@"溪石的點播清單\\\\n"
@"\\\\t黑客帝國2-重裝上陣\\\\t1 元\\\\n"
@"費用總計 1 元\\\\n"
@"獲得積分 1"
isEqualToString:[aCustomer statement]],
@"測試點播一部普通電影,周末半價");
}

 

這個測試用例除了電影名稱不一樣外,只是將點播時段由工作日改為了周末,以此判斷計算規則是否正確。 這時,我們已經有兩個測試用例了,為了加快測試速度,打開Xcode左側第5項的測試導航面板,可以單獨指定一個用例運行,注意圖中標記處的圖標變化:

單獨運行一個測試用例

如此,我們可以將statement需要考慮的返回情況都寫成一個個都測試用例(這里就不一一列舉了,童鞋們可以自行實現,有問題可以評論中提出,雖然我不一定會回答),可以確保報表算法滿足全部需求。

單元測試和功能測試的差別

功能測試的目的是保證整個軟件包能正常工作,它面向的對象是客戶,保障軟件功能符合客戶的要求的質量,當然這類工作應該交由喜愛找bug的專業測試部門去處理,他們會用與開發截然不同的工具,并且不關心實現的細節(這就是你與測試人員老是話不投機的原因)。

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

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