iOS 4.1 SDK 中的单元测试坏了?
Posted
技术标签:
【中文标题】iOS 4.1 SDK 中的单元测试坏了?【英文标题】:Unit Testing broken in iOS 4.1 SDK? 【发布时间】:2010-09-12 18:49:47 【问题描述】:升级到 4.1 ios SDK 后,我的单元测试包总是返回以下两个错误和一个警告:
An internal error occurred when handling command output: -[XCBuildLogCommandInvocationSection setTestsPassedString:]: unrecognized selector sent to instance
An internal error occurred when handling command output: -[XCBuildLogCommandInvocationSectionRecorder endmarker:]: unrecognized selector sent to instance
Run unit tests for architecture 'i386' (GC OFF) did not finish
尽管它报告 X 中的所有 X 测试都通过了,但我还是收到了这些错误。我在旧版本的 XCode 中读到了一个类似的错误,该错误也在它发布后立即发生(关于时间正则表达式中的错误),可以通过将您的时区设置为太平洋时间来缓解,但我不能可以肯定地说,这是具体到那里的回归。
还有其他人有这个问题吗?
【问题讨论】:
我也有这个问题。 ***.com/questions/3516745/… 建议更改测试目标的 Base SDK,但这并不能解决我的问题。 使用 iOS 4.1 SDK 时遇到同样的错误。 我在 iOS 4.1 SDK 中遇到了同样的问题。这个问题在 iOS 3.2 SDK 中变得更加严重。 3.2 中有更多这些内部错误。至今没有解决办法。 :-( 【参考方案1】:Apple 开发者论坛上有一个修复程序,
https://devforums.apple.com/thread/68687
这是一个日期解析问题。修复很快,它需要在您的测试包中添加一个 .m。该修复程序可在上方或从以下位置获得:
http://gist.github.com/586296
【讨论】:
我将该文件包含在目标的编译源步骤中,但仍然出现错误。显然他们并没有为所有人解决这个问题。 只是为了确认,它在您的测试目标中,而不是您的应用目标中? 是的,它包含在我的测试目标的 (LogicTests) 编译源步骤中。那是正确的地方吗? 是的,这是正确的目标。而且您仍然收到完全相同的错误消息?我有同样的错误,但这解决了它。您可以在补丁文件中的descriptionWithLocale:
上尝试一个断点,看看它是否被命中。【参考方案2】:
这似乎是一种回归,报告代码的某些部分不考虑时区问题。输出在开始之前被标记为结束,因此会变得非常混乱和窒息。
我在 Google 某处找到的一种解决方法是更改目标的运行脚本阶段。
改变
"$SYSTEM_DEVELOPER_DIR/Tools/RunUnitTests"
到
"$SYSTEM_DEVELOPER_DIR/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out
它正在解决问题,而不是解决它,但确实有效。
【讨论】:
【参考方案3】:这是 Xcode 3.2.4/4.1 SDK 中已确认的错误。已向 Apple 报告。
升级到 Xcode 3.2.5/4.2 beta SDK 解决了这个问题。 我不知道 beta SDK:s 是否开放,或者你是否需要成为注册开发者,不过.
【讨论】:
【参考方案4】:我也遇到了同样的问题。
奇怪的是,我可以通过调试器按照http://www.grokkingcocoa.com/how_to_debug_iphone_unit_te.html 运行单元测试来正确完成它们
因此,Otest 的 XCode 接口似乎有问题...
我真的不想将我的时区设置为 PST,this post 似乎表明我在英国...
【讨论】:
我在 PST 并且遇到了这个问题。我怀疑更改时区会对您有所帮助。以上是关于iOS 4.1 SDK 中的单元测试坏了?的主要内容,如果未能解决你的问题,请参考以下文章
存根 Google Maps/Places iOS SDK 调用以进行单元测试