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 升级后进行逻辑测试的问题的主要内容,如果未能解决你的问题,请参考以下文章

将 Xcode 3.2.4 升级到 3.2.5。先卸载?

升级到 XCode 4.3 后 FPS 下降

军规14 增量升级必不可少

iOS 10 升级后无法真机测试 Could not find Developer Disk Image

如何安装或升级Windows 10创意者更新正式版

75道程序员面试逻辑测试题(附答案)