用于NSCoding的Swift 2.0单元测试

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类中测试这些方法.

Dog*_*fee 9

远离问题总是有帮助的.

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)