升级到Xcode 5.1后,从命令行运行单元测试失败。

3

升级到Xcode 5.1后,从命令行运行单元测试停止工作。

当我运行xcodebuild test -workspace MyApp.xcworkspace -scheme MyApp -sdk iphonesimulator -configuration Debug时,会发生以下情况。

[...]
2014-03-11 15:32:08.392 Test Host[67583:907] Error loading /Users/0xced/Library/Developer/Xcode/DerivedData/MyApp-cdhjwjcbamuhpvfislepygilkusg/Build/Products/Debug-iphonesimulator/MyApp Tests.xctest/MyApp Tests:  dlopen(/Users/0xced/Library/Developer/Xcode/DerivedData/MyApp-cdhjwjcbamuhpvfislepygilkusg/Build/Products/Debug-iphonesimulator/MyApp Tests.xctest/MyApp Tests, 262): Library not loaded: /Developer/Library/Frameworks/XCTest.framework/XCTest
  Referenced from: /Users/0xced/Library/Developer/Xcode/DerivedData/MyApp-cdhjwjcbamuhpvfislepygilkusg/Build/Products/Debug-iphonesimulator/MyApp Tests.xctest/MyApp Tests
  Reason: image not found
IDEBundleInjection.c: Error loading bundle '/Users/0xced/Library/Developer/Xcode/DerivedData/MyApp-cdhjwjcbamuhpvfislepygilkusg/Build/Products/Debug-iphonesimulator/MyApp Tests.xctest'
** TEST SUCCEEDED **

尽管xcodebuild报告**测试成功**,但测试显然并没有运行。

我该如何解决这个错误?

1个回答

8
该错误提示 /Developer/Library/Frameworks/XCTest.framework/XCTest 未找到。因此,为了解决这个问题,我向我的单元测试目标添加了一个运行脚本阶段,并加入以下脚本:
install_name_tool -change "/Developer/Library/Frameworks/XCTest.framework/XCTest" "${SDKROOT}/Developer/Library/Frameworks/XCTest.framework/XCTest" "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}"

这个命令告诉单元测试包从当前SDK中加载XCTest框架,而不是从不存在的/Developer目录中加载。

令人惊讶的是,这个修复只有在我的电脑上需要,但在我们的CI服务器上不需要。我的电脑和我们的CI服务器之间的区别包括:

  • 几个Xcode版本(4.6.3 + 5.0.2 + 5.1)与仅为Xcode 5.1
  • 几个iOS模拟器(6.1 + 7.1)与仅为iOS 7.1模拟器

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接