如何在 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.storyboard
和 TransactionsViewController
共享给您的测试目标。
自 Swift 2 起,您可以导入您尝试为其编写测试的模块:
@testable import ModuleName
使用此方法,您无需手动将文件从 App Target 添加到 Test Target。
因此,如果您的主要目标被命名为 "MyApp" 而您的测试目标是 "MyAppTests",您可以将其包含在您正在编写的每个测试文件的顶部:
@testable import MyApp
自定义视图控制器使用该协议。
我不确定这是否是正确的方法,但现在我正在单元测试中实例化视图控制器 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.storyboard
和 TransactionsViewController
共享给您的测试目标。
自 Swift 2 起,您可以导入您尝试为其编写测试的模块:
@testable import ModuleName
使用此方法,您无需手动将文件从 App Target 添加到 Test Target。
因此,如果您的主要目标被命名为 "MyApp" 而您的测试目标是 "MyAppTests",您可以将其包含在您正在编写的每个测试文件的顶部:
@testable import MyApp