Cordova + XCTest导致'未定义的架构i386符号'

时间:2013-12-03 22:28:46

标签: cordova i386 xctest

当我尝试将XCTest与Cordova项目集成时,我遇到了错误。它发生在一个新的cordova应用程序,没有自定义。只需添加XCTest并且测试失败并出现以下错误:

Undefined symbols for architecture i386:
  "_CGRectZero", referenced from:
      +[CDVUserAgentUtil originalUserAgent] in libCordova.a(CDVUserAgentUtil.o)
  "_OBJC_CLASS_$_ALAssetsLibrary", referenced from:
      objc-class-ref in libCordova.a(CDVURLProtocol.o)
  "_OBJC_CLASS_$_CLLocation", referenced from:
      l_OBJC_$CATEGORY_CLLocation$_JSONMethods in libCordova.a(CDVShared.o)
  "_UTTypeCopyPreferredTagWithClass", referenced from:
      ___30-[CDVURLProtocol startLoading]_block_invoke in libCordova.a(CDVURLProtocol.o)
  "_kUTTagClassMIMEType", referenced from:
      ___30-[CDVURLProtocol startLoading]_block_invoke in libCordova.a(CDVURLProtocol.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我尝试删除i386架构无济于事,还有其他一些东西,但是这个架构正在逃避我。

有什么想法?提前谢谢!

编辑: 我忘了注意该项目构建完美,但运行测试[通过产品 - >测试]导致这些错误。

1 个答案:

答案 0 :(得分:10)

找到它。

您必须将每个框架添加到您需要的测试目标中。在我的情况下,我需要添加:

CoreLocation.framework
AssetsLibrary.framework
CoreGraphics.framework
MobileCoreServices.framework

之后,单元测试按预期失败。