Xcode9 单元测试 实践和踩坑记录
1) 没有tests 文件夹
如果出现问题(下图所示) 找不到.plsit 文件,需要删除单元测试的target 重新建造一个单元测试
![](https://img.haomeiwen.com/i1194882/6b8f40dcb4b1d8c8.png)
2) 单元测试多个target ,很容易出现provisioning 错误
真机运行提示A valid provisioning profile for this executable was not found
错误
A valid provisioning profile for this executable was not found
或提示
The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile.(0xE8008016).
如果项目在xcode7上真机运行无问题,那么这一切跟你的profile文件和签名文件无关,全部状态都是正确的。各位不用去重置签名文件、profile文件或者各种权限,因为这种情况下,就算重置也是没用的。
问题原因:
Xcode9 在切换Team的时候,并没有把project.pbxproj工程文件里的TeamID进行切换到新的TeamID。
解决办法
找到变换前后两个账号的TeamID,这个可以到ituneconnect里面找,或者直接到project.pbxproj查找,出问题的此刻,已经存在两个不同的teamID。
打开项目里的project.pbxproj工程文件中,把签名TeamID全部手动替换成目标TeamID。DEVELOPMENT_TEAM = XXXX ; XXXX填写新的TeamID.如下图
project.pbxproj工程文件根据Target数量的不同,可能有好几处TeamID,全部替换成目标TeamID再次运行即可。
如果上述方案还不行,可能有缓存,删除app,删除derived data 即可解决
2.1) 单元测试的真机证书配置的正确姿势
主工程配置,使用自己的账号
![](http://upload-images.jianshu.io/upload_images/1194882-4978c4b5c8383740.png)
单元测试工程,和主工程配置一样
![](http://upload-images.jianshu.io/upload_images/1194882-aa97895e3343be5f.png)
2.3) 知道公司证书账号密码的解决方案
如果知道 公司的账号和密码 主工程和单元测试都填写自己和公司的账号就可以搞定
3) 开启单元测试
第一个三角形,点击run 即可
![](http://upload-images.jianshu.io/upload_images/1194882-6d15dc628f0a2d01.png)
4) podfile中一定要增加单元测试的target ,否则找不到文件
platform :ios, '7.0'
target 'UnitTestDemoTests' do
pod 'AFNetworking', '~> 2.5.0'
pod 'STAlertView', '~> 1.0.0'
end
target 'UnitTestDemoTestsTests' do
pod 'AFNetworking', '~> 2.5.0'
pod 'STAlertView', '~> 1.0.0'
end
5) 查看代码覆盖率
步骤1
![](http://upload-images.jianshu.io/upload_images/1194882-c65f9359de5b6afd.png)
步骤2,按照步骤点击
![](http://upload-images.jianshu.io/upload_images/1194882-d74f2c508906359f.png)