我有一个单元测试需要访问我的应用程序目标导入的模块上的内部方法/属性。
例如
子模块.swift
public class SubModuleType {
...
internal let value: InternalSubModuleType
...
}
AppViewController.swift
import SubModule
// do things with SubModuleType
AppViewControllerTests.swift
@testable import App
@testable import SubModule
func testWithSubModule() {
let internalSubModuleTypeInstance = SubModule.SubModuleType().value
// ... run a test dependent on internalSubModuleTypeInstance
}
在此测试中,我在访问.value
.
- 我已将
SubModule
目标添加到App-Tests
“目标依赖项” - 对于我正在编译以进行测试的方案,我已将 App 目标和 SubModule 目标的“启用可测试性”设置为 YES。
@testable import
应该允许您在这些条件下访问标记为内部的类型。我不确定为什么会收到此编译器错误。我仍然可以使用在我的 App 目标中标记为内部的任何类型,@testable
但不能使用我的 SubModule 目标。
您是否只允许 1 个目标出现@testable import
在测试目标中,还是我遗漏了什么?
使用 Xcode 9、Swift 3.2