如何使用Swift测试Objective-C框架的内部

Fra*_*gel 8 testing frameworks module objective-c swift

我有一个用Objective-C编写的框架/模块,想要在Swift中测试它的外部接口内部.为此,我在同一个项目中创建了一个新的测试目标,目标是框架.在Swift代码中,我可以导入模块并使用公共类而不会出现问题.但是,我无法访问测试中的内部类.

我尝试了以下方法:

  • 我将内部源的可见性设置为"Project".根据我的理解,它应该使它们可用于同一项目中的代码.但它不起作用.或者我需要以不同的方式导入它们吗?
  • 我还在@testable importXcode 7中尝试了Swift 2 的新功能,但这似乎对Objective-C框架没有用处.

我想出的是在测试目标的桥接头中手动导入我想要测试的所有私有源.这样可行.但是,它并不觉得它是使用Swift测试Objective-C框架的预期方式.

关于如何做得更好的任何想法?

rik*_*ola 1

我过去处理此类问题的方法是在框架内创建公共类,将要测试的内部类进行子类化。您可以添加编译器标志,使它们仅使用调试或测试配置构建。

例如,如果您有一个名为 的类SomeClass,则SomeClassTest该类将公开重写所有方法。这样做还使您能够轻松地包含测试逻辑,例如在需要的地方插入虚拟数据等。