swift - 将目标导入单元测试和将该文件包含在目标成员中有什么区别?
问题描述
当我编写测试时,我可以:
@testable import TestProduct
以上与将测试文件添加到特定目标有何不同?
最终我的问题是:如果我让我的 unitTests 成为我所有文件的目标......它是否相当于做:
@testable import TestProduct
如果不是,那有什么区别?
解决方案
来自Swift 文档,标题为单元测试目标的访问级别(添加了重点)
当您编写具有单元测试目标的应用程序时,您的应用程序中的代码需要对该模块可用才能进行测试。默认情况下,其他模块只能访问标记为开放或公共的实体。但是,如果您使用 @testable 属性标记产品模块的导入声明并在启用测试的情况下编译该产品模块,则单元测试目标可以访问任何内部实体。
这些文档说@testable 属性为您的单元测试目标提供了对标记为@testable 的模块的所有内部的访问。因此,您可以避免将该模块中的单个文件手动添加到单元测试目标。
@testable 导入通常在尚未进行任何测试的大型代码库上完成......因为这种方法比将要测试的文件添加到测试目标要慢得多。
推荐阅读
- python - 如何在 django admin 上编辑“现场查看”网址?
- javascript - 使用 react javascript 子组件访问功能的问题
- java - 光标异常:请求索引 0,大小为 0
- highlight - 如何使 WinDjView 中的高亮文本永久化?
- android - Android:GoogleMaps 标记详细信息片段
- css - Bootstrap 5 - justify-content - 整体背景
- mongodb - 一个文档中的MongoDB多个_id字段错误
- ssl - SSL torrent 通过磁力链接
- json - 在 PSQL 中从包含 JSONB 的表创建物化视图
- laravel - 在 laravel 项目上强制 https