单元测试在 Xcode 7 中崩溃

Unit tests crashing in Xcode 7

当单元测试在Xcode7(GM和7.0.1)中为运行时,测试通过;但在那之后,它立即崩溃了。

Xcode 调试控制台显示以下错误: libc++abi.dylib: 以 std::__1::system_error 类型的未捕获异常终止:互斥锁失败:参数无效

日志也显示了很多这样的错误:


测试套件 'MyTests' 于 2015-10-05 09:20:54.028 通过。 在 0.001 (0.002) 秒内执行了 1 次测试,0 次失败(0 次意外)

测试套件 'Selected tests' 于 2015-10-05 09:20:54.028 通过。 在 0.001 (0.003) 秒内执行了 1 次测试,0 次失败(0 次意外)

分析:/Users/ldupont/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录

分析:/Users/ldupont/Documents/Fuego/Player_ios/PlayerIOS/ObjectiveC.gcda:无法打开:没有那个文件或目录

分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录

分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录

分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/PlayerIOS.build/Objects-normal/x86_64/SCPlayerTabularCollectionView.gcda:无法打开:没有那个文件或目录

分析:/Users/testuser/Library/Developer/Xcode/DerivedData/PlayerIOS-dpnbmmngypdkcsbguaesyimldsvi/Build/Intermediates/PlayerIOS.build/Debug-iphonesimulator/


我的项目设置如下: 主要目标和测试目标: 启用代码覆盖支持:是 生成遗留测试覆盖率文件:否 仪器程序流程:NO

我也尝试将以上所有设置为 NO,但这没有帮助。

刚刚找到导致崩溃的原因 - 我使用的内部库是使用项目设置编译的 'Instrument Program Flow'= YES,以生成基于 gcov 的代码覆盖率。这在 Xcode 7 中不再支持,它放弃了旧的 gcov 文件格式支持,支持新的中间格式 — profdata。

我获得了该库的新版本,并将 Instrument 设置设置为 NO,然后崩溃消失了,所有单元测试都通过了。希望这对面临同样问题的其他人有所帮助。