
更新:您可以在此处下载Xcode项目:http://github.com/d11wtq/Cioccolata
我已经为我的Xcode项目添加了一个单元测试目标,但它在构建时找不到我的框架,说:
无法加载Test.octest,因为发生了链接错误. dyld可能找不到测试包链接的框架框架或库,可能是因为框架或库在链接时具有不正确的安装路径.
我的框架(主项目目标)设计为嵌入式,因此具有@executable_path /../框架的安装路径.
我已将框架标记为测试目标的直接依赖关系,并将其添加到“link Binary with librarIEs”构建阶段.
另外,我添加了“复制文件”的第一步(在它构建了依赖项之后),它只是将框架复制到单元测试包的Frameworks目录中.
有人有这方面的经验吗?我不确定我错过了什么.
编辑|我很确定我不应该,因为框架不可执行,但我没有设置“测试主机”和“捆绑加载器”.这应该(据我的理解)一切正常,因为测试包与框架链接并将像任何其他包一样加载它.
编辑|我想我差不多了.我阅读了以下文章,该文章规定使用@rpath而不是@executable_path.
http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/
在这种情况下,它非常有意义,因为OCUnit测试包不是可执行文件,它是一个普通的旧包,所以@executable_path不兼容.所以现在我的框架将其安装目录设置为@rpath,并且Test目标将其运行时搜索路径(rpath)定义为构建目录.这节省了我不得不将框架复制到测试包中,这意味着整个生成的框架本质上更灵活,因为它可以在任何地方生活.
现在,我也意识到我应该在Test目标上设置Bundle Loader,所以现在将其设置为框架二进制文件的路径.
我可以构建测试目标,我可以从框架中#import类,没有错误.但是一旦我尝试从框架中实例化一个类,我就会收到以下错误:
/Developer/Tools/RunPlatformunitTests.include:412:注意:开始测试架构’i386′
/Developer/Tools/RunPlatformunitTests.include:419:注意:运行架构’i386’的测试(GC OFF)
objc [50676]:GC:强制GC关闭,因为OBJC_disABLE_GC已设置
测试套件’/Users/chris/Projects/Mac/Cioccolata/build/DeBUG/Test.octest(Tests)’开始于2010-05-21 12:53:00 1000
测试套件’CTRequestTest’始于2010-05-21 12:53:00 1000
测试用例’ – [CTRequestTest testnothing]’开始了.
/Developer/Tools/RunPlatformunitTests.include:第415行:50676总线错误“${THIN_TEST_RIG}”“${OTHER_TEST_FLAGS}”“${TEST_BUNDLE_PATH}”
/Developer/Tools/RunPlatformunitTests.include:451:错误:测试装备’/ Developer / Tools / otest’异常退出代码138(它可能已经崩溃).
命令/ bin / sh失败,退出代码为1
我的测试方法只是分配并随后发布我创建的HelloWorld类来帮助调试此设置:
- (voID)testnothing { CTHelloWorld *h = [[CTHelloWorld alloc] init]; [h release];} 如果我用STAssertTrue替换这些代码行(YES,@“什么都不测试”);即使该类仍在导入,错误也会消失.
解决方法 由于没有其他人在讨论这个问题,我最后会说SenTestingKit对我的需求设置的复杂性(和丑陋)真的不感兴趣.我强烈推荐GHUnit在UI中运行(或者在命令行上运行,如果你愿意的话)并且支持使用开箱即用的gdb.在我的项目中下载和使用GHUnit只花了几分钟.它也很漂亮. Apple应该使用Xcode代替SenTestingKit IMHO.
总结以上是内存溢出为你收集整理的objective-c – OCUnit测试嵌入式框架全部内容,希望文章能够帮你解决objective-c – OCUnit测试嵌入式框架所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)