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 调用以进行单元测试

单元测试目标中的 xcode RunUnitTests 脚本?

如何运行Android sdk sample中的单元测试

模拟器在 SDK 5.1 中时单元测试抛出错误

简单 grails 控制器单元测试中的空指针

代码质量保证-单元测试框架pytest