我在向我的 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
Unresolved 标识符错误。
但是,当我尝试运行测试时,出现以下编译器错误:
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'
最佳答案
您是否尝试明确定义您的参数?像这样:
let x : SimpleClass = SimpleClass(x: "foo")
let y : SimpleClass = SimpleClass(dict: ["x": "foo"])
XCTAssertEqual(x, y)
关于unit-testing - 如何在 Swift 中设置单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24285107/