我有一个用 Objective-C 编写的框架/模块,想用 Swift 测试其外部接口(interface)和内部结构。为此,我在同一项目中针对框架创建了一个新的测试目标。在 Swift 代码中,我可以毫无问题地导入模块和使用公共(public)类。但是,我无法访问测试中的内部类。
我尝试了以下方法:
- 我将内部资源的可见性设置为“项目”。据我了解,应该使它们可用于同一项目中的代码。但是,它不起作用。还是我需要以不同的方式导入它们?
- 我还在 Xcode 7 中尝试了 Swift 2 的新
@testable import
功能,但这似乎(目前)不适用于 Objective-C 框架。
我想到的是在测试目标的桥接 header 中手动导入我要测试的所有私有(private)源。这样可行。但是,感觉这并不是使用 Swift 测试 Objective-C 框架的预期方式。
关于如何做得更好的任何想法?
最佳答案
我过去处理此类问题的方法是在框架内创建公共(public)类,将您要测试的内部类子类化。您可以添加编译器标志,使它们仅使用调试或测试配置构建。
例如,如果您有一个名为 SomeClass
的类,您将拥有 SomeClassTest
,它会公开覆盖所有方法。这样做还使您能够轻松地包含测试逻辑,例如在需要的地方插入虚拟数据等。
关于objective-c - 如何使用 Swift 测试 Objective-C 框架的内部结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30984057/