首页 > 解决方案 > 将目标导入单元测试和将该文件包含在目标成员中有什么区别?

问题描述

当我编写测试时,我可以:

@testable import TestProduct

以上与将测试文件添加到特定目标有何不同?

在此处输入图像描述

最终我的问题是:如果我让我的 unitTests 成为我所有文件的目标......它是否相当于做:

@testable import TestProduct

如果不是,那有什么区别?

标签: swiftxcodeunit-testing

解决方案


来自Swift 文档,标题为单元测试目标的访问级别(添加了重点)

当您编写具有单元测试目标的应用程序时,您的应用程序中的代码需要对该模块可用才能进行测试。默认情况下,其他模块只能访问标记为开放或公共的实体。但是,如果您使用 @testable 属性标记产品模块的导入声明并在启用测试的情况下编译该产品模块,则单元测试目标可以访问任何内部实体。

这些文档说@testable 属性为您的单元测试目标提供了对标记为@testable 的模块的所有内部的访问。因此,您可以避免将该模块中的单个文件手动添加到单元测试目标。

@testable 导入通常在尚未进行任何测试的大型代码库上完成......因为这种方法比将要测试的文件添加到测试目标要慢得多。


推荐阅读