Swift和Obj-c互操作性问题,同时单元测试

问题描述:

我有一个用Obj-C编写的iOS应用程序,它也有单元测试。现在,我添加了一个新功能,我在Obj-C类(O)中使用Swift类(S)。我为主要目标和测试目标都设置了桥接头。直到这一点,一切运作良好。Swift和Obj-c互操作性问题,同时单元测试

这里的问题, 如果我想创建一个单元测试类(U)的类O快速运行它,我得到一个问题,说桥接头找不到。我假设这是因为O使用S和这些细节在桥接头文件中,然后再次尝试在U中使用S和O导致失败。如果我添加任何不使用S的其他Obj-C类,它的工作原理完美无缺。

以下是我已经完成的工作,确保您知道发生了什么, 因为我知道哦文件将不支持持有-Swift.h导入语句,因此它是在Om文件中。

是否支持此方案?

Class O uses Class S. 
Class U can test class O by using class S. 

Note: O->Objective-C 
     S->Swift Class 
     U->Unit test class in swift. 
+0

'我为两个主目标设置了桥接头和测试目标',在这个测试目标中你要在单元测试的桥接头中导入主应用程序的桥接头,对吧?如果有的话,也许再加上这个问题的细节? –

+0

IIRC,Apple建议您使用与其测试课程相同的语言编写单元测试。在这种情况下,我可能会在Objective C中编写单元测试,因为他们正在测试的类是Objective-C。也就是说,它使用Swift类并不重要。 –

+0

但是,你真的在​​看什么?或者你为什么怀疑它不被支持? –

答案很简单,但不是很明显。我必须按照使用顺序将导入语句放在桥接头文件中。例如:如果一个类依赖于另一个类,那么重要的是先放置依赖项的import语句,然后在桥接头中放置调用类的文件。