雪豹操作系统中的Xcode 3.2在运行单元测试时会卡住。

4

我有一些单元测试在Xcode 3.1 / Leopard中通过。这些测试在iPhone应用程序项目中使用SenTestingKit,并在单独的“Test”目标中构建/运行。我刚刚升级到Snow Leopard上的Xcode 3.2,测试似乎可以运行(我在Console.app中得到日志并看到它们通过),但是Xcode会在运行后停止响应。即使在Test目标中没有包含任何测试用例,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

我已经清理和重新构建,但没有效果。通过搜索似乎找不到关于这个话题的任何信息(尽管似乎有一个人遇到了相同的问题)。
更新:我已向苹果报告了这个错误,编号为7214051。
6个回答

7

我已经为此提交了一个错误报告,编号为7210948。 令人沮丧的是,苹果公司还没有回应。

--

更新:

苹果开发者论坛上的一位用户发布了一个解决方法 -

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

受影响的用户可以通过以下方法解决(希望你已经准备好了)...

...将构建机器上的时区更改为中央夏令时以外的时区。(六周后您可以改回来,山地标准时间的用户将会受到影响。)

不,认真的。试试看。

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


显然,这是由于正则表达式语句中的错误导致测试运行时间不确定。 “cde” 似乎适用于苹果公司,但无法给出何时会修复该问题。 - Aaron Douglas
我在4.3.1版本(太平洋时间)遇到了这个问题。这个解决方法仍然有效。显然在3.1.2版本中它并没有真正被修复。干得好,伙计们。 - Matt

2
似乎是出现了损坏;也许您的Xcode安装有问题,或者在安装Snow Leopard时出现了一些问题。或者可能是您的项目出现了问题。如果您可以使用另一台Snow Leopard机器进行测试,请尝试。如果仍然崩溃,请通过http://bugreport.apple.com/提交错误报告。

刚刚在另一台Snow Leopard机器上尝试了一下,结果完全相同;还添加了一个带有测试目标和简单测试的新项目,结果也是一样的。感谢您的建议! - Taylor Hughes
哇,这不太好——请在http://bugreport.apple.com/上提交错误报告并附上您的测试项目。您的机器上出现了一些问题(许多人都像单元测试一样依赖它),但Xcode应该更优雅地失败。请随时修改此处的错误编号。 - bbum

1

1

还有一个需要注意的问题(虽然可以说不是 OP 的问题),就是如果您的单元测试包托管在测试环境中(即您的应用程序),并且应用程序初始化存在问题,那么您的测试将会挂起。

这个问题有一个 rdar:rdar://7333645,建议不要 init NSApplicationMain

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

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


1

我也遇到了同样的问题。在无法运行我的旧项目(它是在Leopard和Xcode 3.1下开发的)之后,我尝试在Xcode 3.2中创建一个新项目,并为单元测试添加了一个新目标,添加了新文件和一个虚拟案例,结果Xcode再次崩溃...... 没有其他选择,我只能强制退出。


你能在Xcode挂起时对其进行采样,并将采样结果附加到错误报告中吗? - bbum
顺便说一下,我无法登录到苹果的错误报告系统。我已经提交了一个关于“登录问题”的错误报告。:) 在此期间,这是一个挂起的Xcode进程的示例:http://dump.taylor-hughes.com/xcode_hung_sample.txt 或许这能提供一些见解? - Taylor Hughes

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接