我今天刚刚安装了XCode 4(使用Apple mac app store),我创建了一个新的Mac OS应用程序,并尝试切换到测试模式,并构建它为我生成的测试框架代码。它在这里失败了:
在mytests.h中:
#import <SenTestingKit/SenTestingKit.h>
错误是:
file://..mytests.h: error: Lexical or Preprocessor Issue: 'SenTestingKit/SenTestingKit.h' file not found
现在,当我使用终端中的locate查找SenTestingKit.h时,我注意到它存在于/ Developer-old / Library / Frameworks文件夹下(这是XCode 4安装程序将我/ Developer文件夹重命名为)。没有新的/ Developer / Library / Frameworks。而且我似乎无法在我的磁盘上找到SenTestingKit.framework,除了开发人员之外。
怎么了?似乎SenTestingKit.framework不随XCode 4一起提供。
更新
此外,当我将旧的SenTestingKit框架从XCode 3复制到/ Developer / Library / Frameworks时,它构建了一些版本,但它并不像我期望的那样工作。虚拟测试只是失败,但是当我“运行测试”时,我只是打开正常的cocoa app文档窗口,并没有迹象表明我的测试失败了(我打算这样做)。
这很糟糕。我无法对FAIL进行单元测试。你明白,这不是我常见的情况。
答案 0 :(得分:4)
您可能会发现原因是因为您已将Xcode 4安装到/ Xcode 4.x /或类似目录中。该空间导致问题,因为-I路径是“Xcode”和“4.x / Library / Frameworks”。
要解决此问题,您需要做的是选择您的测试目标,并在其构建设置下去查找框架搜索路径,并在两个参数周围加上引号,这样您就拥有:
“$(SDKROOT)/ Developer / Library / Frameworks”和“$(DEVELOPER_LIBRARY_DIR)/ Frameworks”
然后你的默认测试将编译,链接和失败。
答案 1 :(得分:1)
您可能需要将框架导入项目中。否则,将无法识别头文件。
如果您无法看到所需的框架,可以在项目的构建设置中调整框架外观路径。
答案 2 :(得分:0)
当您在与主代码相同的项目中构建单元测试时,请确保XCode 4没有自动将mytests.m文件连接到主代码的“编译源”部分。
例如,如果我们的项目中有两个目标:
MyProject的
MyProjectTests
检查MyProject的Build Phases,看看XCode是否将mytests.m添加到“Compile Sources”手风琴中。这将导致构建失败,因为SenTest未包含在主项目中。