2

我为我的 iPhone 项目设置了单元测试,该项目使用基于 OCUnit的Google Toolkit for Mac框架构建。我有一个名为“单元测试”的依赖项目,它根据需要构建和运行测试。

但后来一切都停止了,我无法理解。突然,我的“单元测试”可执行文件启动并就在那里等待,永远。它永远不会达到应用程序委托的-applicationDidFinishLaunching:方法,这就是所谓的实际单元测试。将 NSLog 插入委托的-init方法告诉我该方法被调用,但应用程序永远不会“完成”启动。

如果我修改运行“单元测试”可执行文件的 shell 脚本并取出-RegisterForSystemEvents参数,可执行文件立即存在(它不运行任何测试)并给我以下消息:

由于没有系统事件服务器而终止。
(如果您想在没有 SpringBoard 的情况下运行,请运行 EventPump 或传递参数“-RegisterForSystemEvents”。

由于它在我删除该参数时终止,所以我很好奇该参数到底是做什么的以及如何,因为它似乎会导致挂起。但由于没有它就无法运行测试,我需要确定如何让它再次工作。但是,Google 没有提供与当前情况相关的任何内容的链接,并且开发文档中的任何内容都没有帮助。

有任何想法吗?

4

4 回答 4

3

如果 Xcode 在构建期间挂起(构建结果窗口显示“运行自定义 shell 脚本”但在那里停止),请选择单元测试目标并单击“获取信息”。然后选择属性选项卡并清除“主笔尖文件”的文本字段并清理目标。

单击“构建并开始”现在应该可以成功运行测试。

于 2009-08-24T17:14:46.840 回答
1

万一其他人遇到这种情况,这就是我终于开始工作的地方。

我制作了代码的本地副本,然后将整个代码库恢复到我的 Git 存储库中的先前提交。干净的结帐仍然可以正常运行测试。然后我逐个文件重新引入我的更改,检查每次增量合并后单元测试是否有效。

当单元测试表明失败时,我希望能达到某个点,但它从来没有出现过。我合并了所有更改,单元测试仍然运行良好。

显然,这对于没有 SCM 系统和工作副本可恢复的任何人都没有帮助。在这种情况下,创建一个干净的项目并将您的代码拉过来将是最好的选择。

于 2009-02-24T17:34:44.187 回答
1

我们从今天早上开始解决了这个问题。树顶 GTM 不应再挂起。它与委托在有机会获得 applicationDidFinishLaunching 事件之前被切换有关。此线程中的更多详细信息:

http://groups.google.com/group/google-toolbox-for-mac/browse_thread/thread/513a3252d655e1e3

于 2010-07-01T19:27:26.830 回答
0

我遇到了同样的问题 - 看起来我在 IB 中搞砸了我的 AppDelegate。

确保:

  • 您在 NIB 中实例化了 AppDelegate 类。

  • 它的window出口指向该NIB 中的UIWindow。

  • 任何其他出口都指向它们应该指向的位置(在我的情况下,tabBarController 到我的实例化 UITabBarController)。

  • 最后,您的 File's Owner 代表出口指向您的 AppDelegate

唷。

于 2011-07-02T12:53:52.083 回答