本文使用苹果的是自带的XCTAssert 框架进行单元测试,网上有很多小白教程都是从零开始新建项目自动勾选Unit Tests,但是我的项目很老,开始的时候并没有勾选,所以只能走新建Target的路了。
1、需要项目中新建单元测试的target (target 不懂的兄弟,请自行百度吧...)
上图中1、就是我们新建的Target名称,这个可以随意取,叫啥都行。2、是项目的账号Team,这个也不用管,就是用项目账号的Team即可,如果是真机调试的话。3、是工程,也不需要设置。上图中4 需要注意,这是需要单元测试的Target对象,如果说你的项目中存在多个Target的话,那就要注意了,选择好哪一个才是要进行单元测试的target
2、此时target 已经创建成功,这个时候就是工程配置的问题了,下面我就讲一下我遇到的两个问题,希望能对相同问题的兄弟有所帮助
(1). 最普遍的当然是Pod 的第三方库报错not found,这个是因为原来Unit Tests 是新建的Pod的路径没有,需要重新引入
将途中的两处none 都设置成pod 路径即可。
(2) 这个错误我也不知道怎么描述,控制台的输出是6535:3315297] Failed to load test bundle from file:///private/var/containers/Bundle/Application/3C3B55CF-0E95-425F-B7AF-D4A158C74A25/zhumuH5.app/PlugIns/YsxTests.xctest: Error Domain=NSCocoaErrorDomain Code=3587 "dlopen_preflight(/var/containers/Bundle/Application/3C3B55CF-0E95-425F-B7AF-D4A158C74A25/zhumuH5.app/PlugIns/YsxTests.xctest/YsxTests): Library not loaded: /System/Library/Frameworks/CoreServices.framework/CoreServices
Referenced from: /var/containers/Bundle/Application/3C3B55CF-0E95-425F-B7AF-D4A158C74A25/zhumuH5.app/PlugIns/YsxTests.xctest/YsxTests
Reason: image not found" UserInfo={NSLocalizedFailureReason=软件包已损坏或丢失必要的资源。, NSLocalizedRecoverySuggestion=请尝试重新安装软件包。
这里我也没办法了,直接来了一波清除缓存,将Xcode资源库的DrivedData 全部干掉然后在BuildSettings里搜索legacy. 将属性设置成YES
(3)这个时候还是有问题,但是日志并没有显示错误,搜索看一下自己新建Target。iOS Deployment. 设置的是多少,我这里是Xcode。自动设置的是12.1,有些第三方库不支持,直接改成9.0就可以build Succeed 了
(4)最后一步,这里都成功了,但是当我们引入动态库SDK的头文件的时候,运行会直接失败,提示SDK找不到,搜索Search Paths。按照我们最开始选择的Unit测试的Target 引入了几个SDKpath,这里也都设置一边就OK了
到这里,我的工程新建的单元测试就可以成功编译了,希望可以帮助到您