- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
更新:我最终放弃并将 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/
有谁知道如何查找 ostest 实用程序抛出的所有可能错误代码的列表及其含义?我注意到这对人们来说是一个常见问题,他们询问 OCUnit 故障,其中代码 138 或 139 对他们来说完全不透明,而遇
我正在 XCode 3.2.3 和 iOS 4.0 上使用 OCUnit 对我的 iPhone 应用程序进行单元测试。我已成功设置测试环境以适本地通过和失败基本测试,但是当我导入自己的文件(在本例中为
在调试测试用例失败时,如果执行会在测试用例失败时自动中断,那将非常有用,这样我就可以直接调查失败。因此,本质上是断言失败时触发的断点。 有谁知道是否有简单的方法可以做到这一点? 最佳答案 有很多解决方
尝试使用以下方式将安全条目添加到钥匙串(keychain)时: SecItemUpdate((CFDictionaryRef)queryKeychain, (CFDictionaryRef)updat
我编写了一个 OCUnit 测试,它在 Xcode 3.2 中运行良好,现在我在 Xcode 4 中遇到了问题。它测试了一个静态函数 X在类 A ,它不调用任何类或函数(库函数之外)。唯一需要调用的其
当运行测试用例的目标时,什么也没有发生,而是显示警告消息 警告:跳过测试; iPhoneSimulator 平台当前不支持应用程序托管测试(TEST_HOST 设置)。 我正在使用 xcode 3.2
我一直在尝试对异步请求进行自动化测试,但是在测试功能等待时,我无法在不同的线程中运行任何东西。 这是测试功能: - (void) testBoxManagerConnexionStatus {
有什么方法可以使用 OCUnit 来表示待定测试吗?当然,我可以这样做: STFail(@"待测试"); 但是,很容易看到失败的测试运行并假设它是我的未决测试。我正在寻找某种方式来告诉自己“这个测试仍
我想使用 Apple 的默认 SenTestingKit 为以下方法编写单元测试: - (NSDictionary*)getValueTags { return _tags; } - (NSS
有没有办法在多个 OCUnit 测试用例之间共享代码?也许我遗漏了一些明显的东西,但我一直没能做到...... 我试图将公共(public)代码放在另一个类中,但似乎只能在继承自 SenTestCas
在运行应用程序测试时(即在设备上),我的 OCUnit 测试套件出现了一些问题。有时,我会遇到一个棘手的错误,似乎是从 OCUnit 类中抛出的。我一直在尝试查看添加到测试套件中的文件,但无法理解它。
我一直在使用 OCUnit 在一个项目中进行单元测试。我已经成功完成了 Xcode 4.2 中 OCUnit 所需的所有设置并成功构建了我的测试用例。 如何控制测试用例的顺序(优先级)?我看到测试用例
我刚开始使用 OCUnit,发现断言有点麻烦。在 JUnit 中,我可以编写一个测试来比较如下所示的数字。这个测试显然会失败,但这显示了我可以为两个数字编写的漂亮、简单的断言和我得到的反馈:“预期
更新:我最终放弃并将 GHUnit 添加到我的项目中。我在几分钟内就启动并运行了 GHUnit。 更新:您可以在此处下载 Xcode 项目:http://github.com/d11wtq/Ciocc
我目前正在使用一个简单的对象,该对象将 lat 和 lng 值保存为 NSString。但是当我试图断言它们是平等的时,我用这种方法失败了 - (void) testLocationParseJson
我正在尝试进一步提升我对 TDD 的体验,我想知道如何检查类中是否存在属性。具体来说,我想确保对象有一个双命名累加器。 // // CSCalculatorModel.h // Calculato
我正在开发一个应用程序,只有在游戏取得进展时,该应用程序才会在点击退出按钮时显示 UIAlertView 。我想知道如何使用 OCUnit 拦截 UIAlertView 并与其交互,甚至检测它是否已呈
我根据“iPhone开发指南”创建了OCUnit测试。这是我要测试的类: // myClass.h #import #import @interface myClass : NSObject {
我真的很难理解单元测试。我确实理解 TDD 的重要性,但是我读到的所有单元测试示例似乎都非常简单和琐碎。例如,测试以确保设置了属性或是否为数组分配了内存。为什么?如果我编码出 ..alloc] ini
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: 'isMemberOfClass' returning 'NO' when custom init “isM
我是一名优秀的程序员,十分优秀!