Snow Leopard中的Xcode 3.2挂起运行单元测试

时间:2009-09-01 20:24:45

标签: iphone unit-testing xcode testing osx-snow-leopard

所以我有一些单元测试通过Xcode 3.1 / Leopard。它们在iPhone应用程序项目中使用SenTestingKit,并在单独的“测试”目标中构建/运行。我刚刚在Snow Leopard上升级到Xcode 3.2并且测试似乎运行(我在Console.app中获取日志并看到它们正在通过),但Xcode沙滩球并且必须在它们运行后强行退出。 Console.app显示来自Xcode的以下错误,即使测试目标中没有包含测试用例,也会出现错误:

Xcode[1734] -[XCBuildLogCommandInvocationSection setTestsPassedString:]:
                unrecognized selector sent to instance 0x20104db60

Xcode[1734] -runOperationInBackground raised an exception: 
                 -[XCBuildLogCommandInvocationSection setTestsPassedString:]:
                 unrecognized selector sent to instance 0x20104db60

我已经清理并重新构建无济于事,我似乎无法通过搜索找到关于此主题的任何内容(尽管看起来one person看起来有同样的问题)。

更新:我已将此报告为Apple的错误,错误为#7214051。

6 个答案:

答案 0 :(得分:7)

我还为此提交了一份错误报告,7210948。苹果仍然没有回应令人沮丧。

-

更新:

Apple Developer论坛上的用户发布了一个解决方法 -

  

我们最近发现了这个问题的根本原因。

     

受影响的人可以解决这个问题(我希望你已做好准备)......

     

...将Build机器上的时区更改为远离Central Daylight Time。 (在六个星期内,您可以将其更改回来,Mountain Standard TIme中的人员将受到影响。)

     

不,认真。试一试。

     

消息由:cde在下午3:34编辑

答案 1 :(得分:2)

听起来像腐败;也许你的Xcode安装很糟糕,或者在安装Snow Leopard时可能会出现问题。

或者你的项目可能会以某种方式被冲洗。

如果您可以使用另一台Snow Leopard机器,请在那里进行测试。如果它仍然崩溃,请通过http://bugreport.apple.com/

提交错误

答案 2 :(得分:1)

我也经历过同样的事情。在我无法运行mu old项目(在leopard和Xcode 3.1中开发)之后,我尝试在Xcode 3.2中创建一个新项目并为单元测试添加了一个新目标,添加了新文件和一个虚拟案例,Xcode再次被绞死......别无选择,我不得不强行退出。

答案 3 :(得分:1)

根据此链接http://www.artin.org/geekblog/2009/09/xcode-snow-leopard-logical-unit-tests-hanging/

将时区更改为PST可解决此问题。

有趣的是,我在我的macbook pro上有这个问题,但不是我的mac pro。

答案 4 :(得分:1)

需要注意的另一个问题(尽管可能不是OP的问题)是,如果您的单元测试包托管在测试装备(您的应用程序)中,并且它们是应用程序初始化的问题,那么您的测试将会挂起。 / p>

有一个rdar:rdar:// 7333645这表明没有初始化NSApplicationMain

对此的诊断是进行构建。如果它挂起,请停止构建。

手动尝试执行应用程序(Cmd-Option-R或Cmd-Option-Y) - 如果您的应用程序未启动,请检查控制台。

答案 5 :(得分:0)

Apple发布了一个解决方案文件和一个演示测试项目: https://developer.apple.com/library/ios/#samplecode/iPhoneUnitTests/Introduction/Intro.html

只需添加:Xcode324iOS41TestSuiteWorkaround.m到您的测试目标,一切都会神奇地工作:)