如何在Swift中设置单元测试?

时间:2014-06-18 12:04:05

标签: unit-testing testing swift

我在将单元测试添加到我的Swift项目时遇到了问题,因此我创建了一个新的Xcode测试项目,其中包含我的类的精简版本:

class SimpleClass {
    let x: String

    init(x: String) {
        self.x = x
    }

    convenience init(dict: Dictionary<String, String>) {
        self.init(x: dict["x"]!)
    }
}

然后我创建了一个简单的测试用例:

import XCTest
import TestProblem

class TestProblemTests: XCTestCase {
    func testExample() {
        // This is an example of a functional test case.
        XCTAssertEqual(SimpleClass(x: "foo"), SimpleClass(dict: ["x": "foo"]))
    }

}

我必须导入项目本身(import TestProblem)来修复SimpleClass的未解决的标识符错误。

但是,当我尝试运行测试时,出现以下编译器错误:

Could not find an overload for 'init' that accepts the supplied arguments

我在这里缺少什么?对{init}的调用在XCTAssertEqual调用之外工作正常,即使在测试文件中也是如此。

在预感中,我也尝试过:

    let x = SimpleClass(x: "foo")
    let y = SimpleClass(dict: ["x": "foo"])
    XCTAssertEqual(x, y)

当我这样做时,我收到了这个错误:

Cannot convert the expression's type 'Void' to type 'SimpleClass'

1 个答案:

答案 0 :(得分:2)

您是否尝试明确定义您的参数?像这样:

let x : SimpleClass = SimpleClass(x: "foo")
let y : SimpleClass = SimpleClass(dict: ["x": "foo"])
XCTAssertEqual(x, y)