2015-08-15 47 views
3

我將嘗試在Xcode 7(代碼覆蓋率)和Swift 2.0中使用新的測試功能。Swift 2.0 NSCoding的單元測試

使用代碼覆蓋率,我看到我沒有測試我的NSCoding方法。

enter image description here

爲了節省一些細節的一個簡單的例子,比如

required init(coder aDecoder: NSCoder) { 
    name = aDecoder.decodeObjectForKey("name") as! String 
    time = aDecoder.decodeIntegerForKey("time") 
} 

func encodeWithCoder(aCoder: NSCoder) { 
    aCoder.encodeInteger(time, forKey: "time") 
    aCoder.encodeObject(name, forKey: "name") 
} 

如何去測試在XCTest類這些方法。

回答

7

遠離問題始終有幫助。

func testDecoder() { 

    let path = NSTemporaryDirectory() as NSString 
    let locToSave = path.stringByAppendingPathComponent("teststasks") 

    let newTask = Task(name: "savename", time: "10") 

    // save tasks 
    NSKeyedArchiver.archiveRootObject([newTask], toFile: locToSave) 

    // load tasks 
    let data = NSKeyedUnarchiver.unarchiveObjectWithFile(locToSave) as? [Task] 

    XCTAssertNotNil(data) 
    XCTAssertEqual(data!.count, 1) 
    XCTAssertEqual(data!.first?.name, "savename") 
    XCTAssertEqual(data!.first?.time, 10) 
}