用Swift語言做App開發之單元測試

來源:互聯網
上載者:User

標籤:

作為一個有品質保障的應用程式,當然少不了單元測試;Swift開發的App也亦如此,此文將以一個簡單的執行個體來介紹Swift中的單元測試。

這裡我們使用XCode模版內建的XCTest架構,此架構套件含了一個名為XCTestCase的類,所有的測試類別都應該繼承自它;按照約定俗成所有的測試方法名都應以test開頭,並不能包含任何參數,只有這樣,這些測試方法才能在運行測試時被自動執行;在每個測試方法裡面,我們可以通過調用XCTAssert*函數去斷言一個操作成功與否,如判等函數XCTAssertEqual、大於函數XCTAssertGreaterThan等;

話不多說,請先使用XCode建立一個iOS的Single View Application項目,並選擇Swift作為開發語言。

大家可以看到建立完成後的目錄結構應該是如此(這裡我的項目名為TestDemo):

預設的模版會建立兩個檔案夾,一個和項目名同名(這裡是TestDemo),用於放置App的主程式;另外一個則是“項目名+Tests”(這裡是TestDemoTests),用於放置測試代碼;

這裡要注意的是,你要測試的類需要在Test中使用到,所以你在建立類檔案時需要在Targets中同時選擇TestDemo和TestDemoTests;

如我在主應用程式中添加一個名為Url的類:

建立完成後,錄入代碼:

 1 class Url { 2     let baseUrl: String 3      4     init(baseUrl: String) { 5         self.baseUrl = baseUrl 6     } 7      8     func getActualPathFrom(resourcePath: String, segments: [String:String]) -> String { 9         var actualPath = resourcePath10         for (key,value) in segments {11             var segmentPlaceHolder = "{\(key)}"12             actualPath = actualPath.stringByReplacingOccurrencesOfString(segmentPlaceHolder, withString: value, options: .LiteralSearch, range: nil)13         }14         return baseUrl + actualPath15     }16 }

然後在TestDemoTests檔案夾下建立UrlTests檔案,此時由於該類只需要在測試中才能用到,所以只需要在Targets選擇TestDemoTests就可以了:

建立完成後,匯入XCTest架構,即可錄入測試代碼了:

import XCTestclass UrlTests: XCTestCase {    var urlInstance = Url(baseUrl: "http://localhost:8080/api/")        func testShouldGetCorrectPathWhenNoSegmentProvided() {        let resourcePath = "customers"                let result = urlInstance.getActualPathFrom(resourcePath, segments: [String:String]())                XCTAssertEqual(result, "http://localhost:8080/api/customers", "Can not get corrent path when no segments provided")    }        func testGetCorrectPathGivenOneSegment() {        let resourcePath = "customer/{id}"                let result = urlInstance.getActualPathFrom(resourcePath, segments: ["id": "10"]);                XCTAssertEqual(result, "http://localhost:8080/api/customer/10", "Can not get corrent path when only one segment provided")    }}

最後Command+U執行測試 

用Swift語言做App開發之單元測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.