Dog*_*fee 3 unit-testing nscoding swift
我将尝试使用Xcode 7(代码覆盖率)和Swift 2.0中的新测试功能.
使用代码覆盖,我发现我没有测试我的NSCoding方法.
有关保存一些细节的简单示例,例如
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")
}
Run Code Online (Sandbox Code Playgroud)
我如何在XCTest类中测试这些方法.
远离问题总是有帮助的.
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)
}
Run Code Online (Sandbox Code Playgroud)