0

我有一个单元测试需要访问我的应用程序目标导入的模块上的内部方法/属性。

例如

子模块.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

4

1 回答 1

0

重新创建测试目标似乎对我有用。

只需删除您的旧测试目标,创建一个新目标并将此目标添加到您拥有的所有测试文件中。

于 2017-10-17T05:49:11.757 回答