如何将SenTestCase添加到cordova或phonegap项目?

时间:2013-08-05 13:58:18

标签: iphone ios xcode cordova sentestingkit

当我尝试在通过phonegap生成的ios项目中添加测试目标时,我收到链接器错误。似乎我的项目中的cordova项目无法找到(我认为),所以当我运行测试时它会抛出错误。

我花了一段时间搜索,没有人有这个错误,是否有可能为cordova项目创建本机单元测试? - 只是为了澄清我正在使用一些本地代码用于cookie并希望对其进行单元测试。

错误是:

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)

任何帮助都会很棒!!!!感谢。

1 个答案:

答案 0 :(得分:0)

基本上,Cordova依赖于Apple框架(在运行时链接)。这些框架没有打包在phonegap内的Cor​​dova项目中。

它可以工作,您需要做的是将相关的Apple框架添加到您的项目中。例如,其中一个未定义的符号是“_OBJC_CLASS _ $ _ ALAssetsLibrary”,这是AssetsLibrary.framework中的一个对象。因此,将此框架添加到您的项目中(并确保它链接到您的应用程序目标)。

对于这些未定义的符号中的每一个,只需Google / Bing看似相关的符号部分(通常是初始下划线之后或_OBJC_CLASS _ $ _之后的部分)并查看符号所属的框架,然后添加您项目的框架。

请注意以下示例中IOBluetooth.framework和Cocoa.framework如何与MyTestApp链接:

enter image description here