2

OCUnit上でGoogleToolkitforMacフレームワークを使用して構築されたiPhoneプロジェクトの単体テストを設定しています。必要に応じてテストをビルドして実行する「ユニットテスト」と呼ばれる依存プロジェクトがあります。

しかし、それからそれはすべて機能しなくなりました。私が理解できる理由はありません。突然、私の「ユニットテスト」実行可能ファイルが起動し、そこに座って、永遠に待機します。-applicationDidFinishLaunching:実際の単体テストと呼ばれるアプリケーションデリゲートのメソッドまでは到達しません。NSLogをデリゲートの-initメソッドに挿入すると、そのメソッドが呼び出されることがわかりますが、アプリケーションは起動を「終了」しません。

「単体テスト」実行可能ファイルを実行するシェルスクリプトを変更して-RegisterForSystemEvents引数を削除すると、実行可能ファイルはすぐに存在し(テストは実行されません)、次のメッセージが表示されます。

システムイベントサーバーがないため、終了します。
(SpringBoardなしで実行する場合は、EventPumpを実行するか、引数「-RegisterForSystemEvents」を渡します。

その引数を削除すると終了するので、ハングを引き起こしているように見えるので、その引数が正確に何をどのように行うのか興味があります。しかし、それなしではテストは実行されないので、どうすればそれを再び機能させることができるかを判断する必要があります。ただし、Googleは現在の状況に関連するものへのリンクを提供しておらず、開発ドキュメントには何も役立ちません。

何か案は?

4

4 に答える 4

3

ビルド中に Xcode がハングする場合 (ビルド結果ウィンドウに「カスタム シェル スクリプトを実行しています」と表示されますが、そこで停止する場合)、単体テスト ターゲットを選択し、[情報を見る] をクリックします。次に、[プロパティ] タブを選択し、[メイン Nib ファイル] のテキスト フィールドをクリアして、ターゲットを消去します。

[Build and Go] をクリックすると、テストが正常に実行されるはずです。

于 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 に答える