如何在 Swift 中为协议编写单元测试

How to write unit tests for a protocol in Swift

自定义视图控制器使用该协议。
我不确定这是否是正确的方法,但现在我正在单元测试中实例化视图控制器 class。

目前我正在尝试这样做:

override func setUp() {
    super.setUp()

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    vc = storyboard.instantiateViewController(withIdentifier: "Transactions") as! TransactionsViewController
}

但是它说 Use of undeclared type 'TransactionsViewController'

这是要走的路吗?如果是,如何使视图控制器可见?

单元测试通常是一个单独的目标,因此要使来自主目标的文件对测试目标可见,您必须更改它们在 File Inspector 中的 目标成员资格 .

在您的情况下,您应该将 Main.storyboardTransactionsViewController 共享给您的测试目标。

自 Swift 2 起,您可以导入您尝试为其编写测试的模块:

@testable import ModuleName

使用此方法,您无需手动将文件从 App Target 添加到 Test Target。

因此,如果您的主要目标被命名为 "MyApp" 而您的测试目标是 "MyAppTests",您可以将其包含在您正在编写的每个测试文件的顶部:

@testable import MyApp