【发布时间】:2015-09-08 03:31:39
【问题描述】:
我有一个用 Objective-C 编写的框架/模块,并想在 Swift 中测试它的外部接口和内部。为此,我在同一个项目中创建了一个新的测试目标,以框架为目标。在 Swift 代码中,我可以毫无问题地导入模块并使用公共类。但是,我无法访问测试中的内部类。
我尝试了以下方法:
- 我将内部资源的可见性设置为“项目”。据我了解,这应该使它们可用于同一项目中的代码。但是,它不起作用。还是我需要以不同的方式导入它们?
- 我还在 Xcode 7 中尝试了 Swift 2 的新
@testable import功能,但这似乎对 Objective-C 框架不起作用。
我想出的是在测试目标的桥接头中手动导入我想要测试的所有私有源。这样可行。但是,这并不是用 Swift 测试 Objective-C 框架的预期方式。
关于如何更好地做到这一点的任何想法?
【问题讨论】:
-
Frank - 通过将它们的标题的导入语句添加到测试项目的桥接头中,我可以看到内部结构。这是你在做什么?我的主要问题比你的更深奥一点。只要它们没有参数,我就可以看到任何内部方法。你见过类似的吗?
-
嗯,这很奇怪。是的,我只是将它们导入到测试目标的桥接头中,不,我还没有遇到过这样的问题。你在使用可变参数列表吗?因为 Swift 不能转换这些方法。此外,有时 Xcode 中的自动完成功能不起作用,但代码仍然可以编译。你试过吗?
-
据我了解桥接头,这是将私有标头公开给swift的方法,而公共标头通过框架的伞头公开。
标签: objective-c swift testing module frameworks