什么是@testable?

在编写代码时,我们根据类和方法的使用情况定义它们的访问级别。 在编写测试时,我们必须在测试目标中访问这些类和方法。

如果我们未指定显式访问级别,则代码中几乎所有实体都具有默认的内部访问级别。 结果,在许多情况下,我们不需要在代码中指定显式访问级别。

swift的访问控制模型可防止外部实体访问在应用程序或框架中声明为内部的任何内容。 默认情况下,为了能够从我们的测试代码访问这些项目,我们需要将它们的访问级别至少提高到公共级别,从而降低快速类型安全的好处。

解:

1.启用“可测试性”构建设置为“是”。 Xcode在编译过程中包含-enable-testing标志。 这使得在编译模块中声明的快速实体有资格获得更高级别的访问权限。

2.当我们将@testable属性添加到已启用测试的模块的import语句中时,我们将在该范围内激活该模块的提升的访问权限。 标记为“公开”的班级和班级成员的行为就像标记为“公开”一样。 其他标记为内部实体的实体就像被宣布为公共实体一样。

注意:

我们无论如何都不会更改源代码。 我们仅修改编译(通过设置标志)。

和测试代码(通过修改import语句)。

@testable仅提供对内部函数的访问; 使用可测试时,fileprivate和private声明在其通常范围之外不可见。


感谢您的阅读 🎾