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

标签 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 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/

相关文章:

javascript - 测试 AngularJS 服务初始化

c# - 这个单元测试是否正确实现?

java - 测试异步方法调用

jsf - 使用 jMeter 测试 xPage 应用程序

ios - 首次登录应用后自动填充iOS12提示信息用户保存密码?

java - 模拟方法在 Mockito 中抛出 NullPointerException

javascript - AngularJS - 指令单元测试什么也没有

java - 如何在 Selenium 中获取 WebElement 的 HTML 代码

ios - 使用 ScrollView 使导航透明时遇到问题

swift - Json 对象映射 Swift