XCode 3.2.4 升级后进行逻辑测试的问题
Posted
技术标签:
【中文标题】XCode 3.2.4 升级后进行逻辑测试的问题【英文标题】:Problem doing logic tests after XCode 3.2.4 upgrade 【发布时间】:2010-09-10 21:03:40 【问题描述】:最近升级到 XCode 3.2.4 和 ios SDK 4.1 导致我的单元测试不再适用于我的 iOS 项目。该项目目前只在模拟器上运行,不是真正的硬件。
我尝试创建一个新的空白项目,添加了一个始终通过的虚拟测试用例,但它也不起作用,给了我这样的结果:
处理命令输出时发生内部错误: -[XCBuildLogCommandInvocationSection setTestsPassedString:]:无法识别的选择器发送到实例 0x20176e320 处理命令输出时发生内部错误: -[XCBuildLogCommandInvocationSectionRecorder endMarker]:无法识别的选择器发送到实例 0x201257de0
其他人使用 XCode 3.2.4 和 iOS SDK 4.1 的测试用例有问题吗?
【问题讨论】:
【参考方案1】:这似乎是一种回归,报告代码的某些部分不考虑时区问题。输出在开始之前被标记为结束,因此会变得非常混乱和窒息。
我在 Google 某处找到的一种解决方法是更改目标的运行脚本阶段。
改变
"$SYSTEM_DEVELOPER_DIR/Tools/RunUnitTests"
到
"$SYSTEM_DEVELOPER_DIR/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out
它正在解决问题,而不是解决它,但确实有效。
【讨论】:
这是否提供了测试是否失败的任何指示?因为如果没有,您不妨完全禁用单元测试目标(这样您就知道它没有运行),而不是让它运行并隐藏结果(这样您可能会忘记并认为它通过了)。 据我所知,它只是将输出转储到构建窗口中,没有应该发生的花哨的嵌套,因此您仍然可以看到通过的测试和/或错误的列表。它不会隐藏结果,甚至不会格式化它们。 运行脚本在哪里配置? @Brig 右键单击构建目标,应该在那里;如果没有,添加 -> 新构建阶段 -> 新运行脚本构建阶段。【参考方案2】:该问题的解决方法已发布在 Apple 的开发者论坛中。它在我的项目中运行良好。访问该网站并尝试一下。
【讨论】:
听起来不错,只是这需要成为付费开发者计划的成员。【参考方案3】:我对解决您的问题的建议是考虑使用 GHUnit。它适用于您现有的 SenTestCase 类,但它也有一组测试类/断言。您只需设置一个新目标并指向他们的驱动程序类。您将获得一个功能齐全的测试工具,可以在模拟器和真实设备上运行您的测试。我发现它比设置测试包和管理所有这些更容易、更健壮。
http://github.com/gabriel/gh-unit
【讨论】:
感谢您的回复,但这并不能解决问题。我遇到了同样的错误,想知道如何解决。 看起来它与日志记录代码有关。我不知道如何解决这个问题。您可能只需要在构建过程中禁用它并手动运行单元测试:( 不完全是我的问题的答案,但很高兴现在了解 GHUnit。以上是关于XCode 3.2.4 升级后进行逻辑测试的问题的主要内容,如果未能解决你的问题,请参考以下文章