gpt4 book ai didi

objective-c - OCUnit 测试嵌入式框架

转载 作者:太空狗 更新时间:2023-10-30 03:48:48 25 4
gpt4 key购买 nike

更新:我最终放弃并将 GHUnit 添加到我的项目中。我在几分钟内就启动并运行了 GHUnit。

更新:您可以在此处下载 Xcode 项目:http://github.com/d11wtq/Cioccolata

我已经向我的 Xcode 项目添加了一个单元测试目标,但它在构建时找不到我的框架,说:

由于发生链接错误,无法加载 Test.octest。 dyld 可能无法找到测试包链接到的框架框架或库,可能是因为框架或库在链接时的安装路径不正确。

我的框架(主要项目目标)设计为嵌入式,因此安装路径为 @executable_path/../Frameworks

我已将框架标记为测试目标的直接依赖项,并将其添加到“Link Binary with Libraries”构建阶段。

此外,我添加了“复制文件”的第一步(在构建依赖项之后),它只是将框架复制到单元测试包的 Frameworks 目录。

有人有这方面的经验吗?我不确定我错过了什么。

编辑 |我很确定我不应该这样做,因为框架不可执行,但我还没有设置“测试主机”和“捆绑加载器”。这应该(据我所知)一切正常,因为测试包链接到框架并将像任何其他包一样加载它。

编辑 |我想我快到了。我阅读了以下文章,其中规定使用 @rpath 而不是 @executable_path。

http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/

在这种情况下,它非常有意义,因为 OCUnit 测试包不是可执行文件,它是一个普通的旧包,所以 @executable_path 不兼容。所以现在我的框架将其安装目录设置为 @rpath 并且测试目标将其运行时搜索路径 (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];
}

如果我用 STAsertTrue(YES, @"Testing nothing"); 替换这些代码行,即使类仍在导入中,错误也会消失。

最佳答案

由于没有其他人提出这个问题,我会说 SenTestingKit 对我需要的设置的复杂性(和丑陋)真的没有留下深刻印象。我强烈推荐 GHUnit,它在 UI 中运行(如果您愿意,也可以在命令行中运行)并支持开箱即用的 gdb。下载 GHUnit 并在我的项目中使用它花了我几分钟的时间。

它也很漂亮。 Apple 应该使用 Xcode 而不是 SenTestingKit 恕我直言。

关于objective-c - OCUnit 测试嵌入式框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2867251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com