单元测试 – 如何在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"]))
    }

}

我必须导入项目本身(导入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'

最佳答案 你试图明确地定义你的param吗?像这样 :

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