问题标签 [ocunit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - Cocoa/Objective-C 中内存管理的单元测试
您将如何编写单元测试(例如,使用OCUnit)以确保对象在 Cocoa/Objective-C 中被正确释放/保留?
一种天真的方法是检查 的值retainCount
,但当然你不应该使用retainCount
. 你能简单地检查一个对象的引用是否被分配了一个值nil
来表明它已经被释放了吗?此外,您对实际释放对象的时间有什么保证?
我希望只有几行代码的简洁解决方案,因为我可能会广泛使用它。实际上可能有两个答案:一个使用自动释放池,另一个不使用。
澄清一下,我不是在寻找一种方法来全面测试我创建的每个对象。对任何行为进行全面的单元测试是不可能的,更不用说内存管理了。不过,至少,最好检查已发布对象的行为以进行回归测试(并确保相同的与内存相关的错误不会发生两次)。
关于答案
我接受了BJ Homer的回答,因为我发现它是完成我的想法的最简单、最简洁的方法,因为需要注意的是自动引用计数提供的弱指针在 XCode 的生产版本中不可用(之前到 4.2?)截至 2011 年 7 月 23 日。得知这一点我也印象深刻
ARC 可以在每个文件的基础上启用;它不需要您的整个项目都使用它。您可以使用 ARC 编译您的单元测试并将您的主项目保留在手动保留发布上,并且该测试仍然可以工作。
话虽如此,为了更详细地探索 Objective-C 中单元测试内存管理所涉及的潜在问题,我强烈推荐Peter Hosey的深入回应。
objective-c - 在终端中使用模拟器进行 OCUnit 应用程序测试
是否可以使用终端命令启动在模拟器中运行的应用程序测试?
谢谢
ios - 如何在 Xcode 4 中每次构建(运行)iOS 应用程序之前自动运行 OCUnit 逻辑测试?
看来我已经正确设置了一切。当我跑command ⌘</kbd> + U (or select Product > Test from menu) my test runs fine.
最佳实践应该是尽可能频繁地运行测试,最好是在每次构建期间(在每次运行期间了解)。
如何强制 Xcode 4 执行此操作?我试图:
- 设置目标依赖(将主应用目标依赖于测试目标)
- 在主应用程序目标构建设置中启用“构建后测试”
- 在方案编辑器中勾选测试目标以运行主应用方案
但似乎没有任何效果。有没有人成功设置这个?
iphone - 如何等待动画从单元测试完成
我正在使用 Xcode 的 OCUnit 编写单元测试,我的测试调用了一个执行动画的方法。我希望只有在动画完成后才能继续测试方法。
执行动画的方法没有动画委托,我认为它不应该有。
如何在不设置动画委托的情况下等待动画在测试方法中结束?
iphone - iPhone 自动化:在 OCUnit 或 FoneMonkey 中设置测试顺序
我正在使用FoneMonkey进行自动化,它利用 OCUnit (SenTestingKit) 以编程方式编写测试用例。有谁知道是否有办法定义测试脚本的运行顺序?在每个脚本中,是否有办法确定测试用例何时运行?
xcode - Xcode键盘快捷键:跳转到测试文件?
是否有 Xcode 键盘快捷键可以从 to 跳转MyObject.m
,MyObjectTests.m
反之亦然?如果是这样,它是什么?
ios - OCUnit/XCode 单元测试的优秀测试运行器
OCUnit/XCode 4 单元测试框架是否有一个好的基于 GUI 的测试运行器?我正在寻找一个红灯/绿灯类型的 GUI,可能看起来像 NUnit 测试运行器。我找到了 OCRunner,但它看起来自 2009 年以来就没有维护过。这很不幸,因为 OCRunner 看起来正是我正在寻找的东西。它在 Lion 上加载,但我无法让它拿起我的测试包并运行它。
关于让 OCRunner 在针对 iOS 项目的单元测试包上运行的替代方案或方法的任何建议?
*仅供参考 - 我正在使用默认的单元测试包模板运行 XCode 4
ocunit - OCUnit:如何更改测试用例方法的前缀?
而不是 prefix test
,我想使用spec
,因为我更喜欢 BDD 词汇。
例如,而不是:
我想称之为:
我怎样才能做到这一点?
objective-c - 从单元测试中加载 NSPersistentDocument
我正在尝试使用我觉得相对舒服的 OCUnit/SenTest 框架编写集成测试。该测试是关于 NSPersistentDocument 子类的加载,该子类依赖于已成功导入的 CoreData 托管对象模型。
解决此问题的最佳方法是什么?我一直在尝试一整天,这是一个接一个的问题。这样做(为了相关性而修剪):
不会产生错误,但文档的托管对象上下文为空 - 即[[mdoc.managedObjectContext registeredObjects] count]
为零。
运行主应用程序(不在单元测试下)按预期工作。docUrl 处的文件加载并且界面正确填充。
我错过了什么?
objective-c - 为 iOS 构建 OCUnit 应用程序测试目标时出现链接器错误
我的 OCUnit 目标中包含一个应用程序测试。我可以在我的应用程序主机目标中的类上调用实例方法,但我不能调用类方法。如果我调用类方法(如alloc
),我会收到以下链接器错误:
我认为这是因为 Objective-C 不需要在链接时访问目标文件来进行实例调用,但确实需要在链接时访问类调用。有人可以指出我的文件来确认这一点吗?
这个问题类似于以下问题: