OC和Swift混编中项目添加Swift类以及单元测试

相信不少人开始从OC转向Swift了,毕竟是个趋势,而且多学一门语言也是极好的,Swift特性也相当之多。我们项目中暂时还是部分转Swift,所以是混编项目,下面讲讲怎么在混编项目中添加Swift类以及相互调用。以及如何添加单元测试:
总结了混编项目中添加单元测试中的一些问题和流程:

一.首先,添加一个单元测试的target,(swift版的):
1.选择xcode顶部导航栏的 File —> New —> Target —> iOS Unit Testing Bundle —> next 然后到建立target界面,如下图:

OC和Swift混编中项目添加Swift类以及单元测试_第1张图片
粘贴图片1212.png

注意语言选择swift, Project 选择你的工程名;填好点击 finish 就创建好了,创建好之后如下图:

OC和Swift混编中项目添加Swift类以及单元测试_第2张图片
粘贴图片1.png

2.创建好之后开始配置单元测试跑的时候需要的依赖,以及要跑的单元测试 target 和 文件,如下图,进入 Edit Scheme 界面:

粘贴图片2.png

点击后选择 Edit Scheme… 进入后选择Build,如下图:

OC和Swift混编中项目添加Swift类以及单元测试_第3张图片
粘贴图片3.png

勾好后进入 Test 如下图:

OC和Swift混编中项目添加Swift类以及单元测试_第4张图片
粘贴图片4.png

如果有多余的 target 记得去掉;
到这里就可以跑起来了,跑单元测试的快捷键为 command + U

3.如果你添加了自己的测试类,需要在编译文件里自行加入,如图所示. 添加之后,如果是纯 Swift 的单元测试就可以跑起来了;

OC和Swift混编中项目添加Swift类以及单元测试_第5张图片
粘贴图片11.png

二.这是个 swift 的单元测试,下面介绍在 swift 版的单元测试中使用 OC
1.首先,和 Swift 项目中添加 OC 混编一个流程,在该 Swift 单元测试的 target 下创建一个 OC 文件,会弹出询问你是否需要创建 bridge 文件的提示, 选择创建:
2.图解上面步骤,首先创建一个 Unit Test Case 文件,选完 Next


OC和Swift混编中项目添加Swift类以及单元测试_第6张图片
粘贴图片6.png

然后记得选择语言为 OC 填完 Next:


OC和Swift混编中项目添加Swift类以及单元测试_第7张图片
粘贴图片7.png

然后选择文件要添加到的 Target 选完确定:


OC和Swift混编中项目添加Swift类以及单元测试_第8张图片
粘贴图片8.png

会弹出创建桥接文件的提示,选择创建:


OC和Swift混编中项目添加Swift类以及单元测试_第9张图片
粘贴图片10.png

创建完之后如下图所示:


OC和Swift混编中项目添加Swift类以及单元测试_第10张图片
粘贴图片5.png

3.然后在该文件中加入需要在单元测试中使用到的 OC 文件就可以了,记住即使是在 Swift 中引入的自定义的 OC 类也要在这里再引入,否则会找不到(如果依赖的是 Swift 的单元测试文件也在这里引入):


OC和Swift混编中项目添加Swift类以及单元测试_第11张图片
粘贴图片9.png

三.现在就完成了,如果自己又添加了新的单元测试文件,重复: 一. 的第三步;以及 二. 的第二步; 就可以了

四.记住不要引入子工程的文件,否则跑的时候会报找不到文件,以下是系统默认给你引入的pch文件引用路径, 如果其中包含子工程文件,记得去掉:


OC和Swift混编中项目添加Swift类以及单元测试_第12张图片
粘贴图片12.png

五.如果系统没给你提示 bridge 桥接文件,你也可以自己添加,如图所示,如果要改,记得改为 Target名/你的桥接文件名.h 的形式:
OC和Swift混编中项目添加Swift类以及单元测试_第13张图片
粘贴图片13.png

六.如果是项目中添加Swift类以及使用,执行第: 二~五 步就可以了,只不过 target 是工程的 target 而不是单元测试的 target ; 如果要在OC类中使用 Swift 类 ,在该 OC 类中 #import "Swift.h" 然后就可以直接使用了 但是注意要被OC类调用的 Swift 的协议,方法和属性等需要有如下图的 @objc 声明:


OC和Swift混编中项目添加Swift类以及单元测试_第14张图片
粘贴图片2121.png

而Swift中调OC类就要如以上第二步所说的在 ***-Bridging-Header.h 文件中 #import 该 OC 文件就可以简单调用了。最后祝你在混编中玩(bei)的(keng)开(dao)心(ku)

你可能感兴趣的:(OC和Swift混编中项目添加Swift类以及单元测试)