【发布时间】:2012-05-03 23:36:25
【问题描述】:
我正在尝试设置 cedar,但无法使其正常工作。我正在尝试按照 github 上的说明进行操作。
我使用的是 xcode 4.2。
我不确定的第一步是:
“为您的项目中的测试创建一个 Cocoa Touch“应用程序”目标。将此目标命名为 UISpecs 或类似名称。”
a) 我不确定在使用 cedar 进行测试时是否可以将 ARC 用于我的主要应用程序。 b)我很确定我不能使用 ARC 来构建雪松本身,我想我也不想这样做。 c) 我不确定我能否将 ARC 用于包含我的规格的测试项目。 d) 我不确定应该使用哪个应用程序模板来创建应用程序来容纳规范。
我使用 ARC 和单窗口应用程序模板创建了一个新的主应用程序。我使用空的应用程序模板创建了一个新应用程序来容纳我的规范,而没有 ARC。
当我打开包含我的规格的测试应用程序的 plist.info 文件时,我没有看到“主 nib 文件基本名称”选项。所以我忽略了这一步。
现在我来一步:
“将 Cedar-iOS 静态框架添加到您的项目中,并将您的 UISpecs 目标与其链接。”
所以我去了规范应用程序构建目标并将 ~/Library/Developer/Xcode/DerivedData/Cedar-borwneaogydgaodbtmfyaccykqxn/Build/Products/Debug-iphoneos/libCedar-StaticLib.a 文件添加到“链接”下的项目中“构建阶段”选项卡下的带有库的二进制文件选项卡。
然后我将 -ObjC、-lstdc++ 和 -all_load 添加到 UISpecs 目标的 Other Linker Flags 构建设置中。
接下来,在包含规范的应用程序下,我创建了一个名为 TestSpec.m 的新文件并将此代码添加到其中,以尝试获取失败的规范:
#import <Cedar/SpecHelper.h>
SPEC_BEGIN(FooSpec)
describe(@"Foo", ^{
it(@"should do something", ^{
expect(0).to(equal(1));
});
});
SPEC_END
当我尝试在模拟器中运行 specs 项目时,我遇到了一些关于使用 ARC 时不支持 alloc 和 autorelease 的错误。我想这意味着我的主应用程序不能使用 ARC,而我的规范应用程序没有。我删除了我的规范应用程序并再次尝试,这次使用 ARC。
我从 main.m 代码中删除了自动释放池和释放代码以符合 ARC。
我现在遇到两个构建错误:
1) 在 main.m 中:file://localhost/Users/nelsond/workspace/BIM360UIArchitecture/BIM360UIPrototype/BIM360Issues-IOS/BIM360Issues-IOS-Specs-ARC/main.m:错误:词法或预处理器问题:'未找到 Cedar-iOS/Cedar-iOS.h' 文件 2)在TestSpec.m中:文件://localhost/Users/nelsond/workspace/BIM360UIArchitecture/BIM360UIPrototype/BIM360Issues-IOS/BIM360Issues-IOS-Specs-ARC/TestSpec.m:错误:词法或预处理器问题:'Cedar/SpecHelper .h' 文件未找到
我很困惑接下来要调试什么。
【问题讨论】:
-
什么是“雪松”?只有 40 个贴有“雪松”标签的帖子,其中大部分是关于云平台 Heroku。您的帖子与 Heroku 无关。
-
“Cedar 是一个 BDD 风格的 Objective-C 测试框架。”来源:github.com/pivotal/cedar