3

Xcode 4.5 で単純なMac OS X コマンド ライン ツールプロジェクトを作成しました。Cocoa Unit Testing Bundleテンプレートから単体テストターゲットを手動で追加しました(コマンド ライン ツール テンプレートには、 Include Unit Testsスイッチがありません)。問題: テストを実行しているときにデバッガーをブレークポイントで停止させることができません ([製品] > [テスト])。

質問する前にグーグル検索を行ったので、これらは私がすでに試した/チェックしたいくつかのことです:

  • 単体テストは実行されます (STFail() などで正しく失敗します)。
  • 上部バーのマスターブレークポイントスイッチがオンになっています (オフにしてオンにしても効果はありません)。
  • Build Configurationは、テスト ターゲットでDebugに設定されています (デバッガーは LLDB であり、GDB に変更しても役に立ちません)。
  • 一般的なデバッグは機能します。メイン コンソール アプリでは、ターゲット ブレークポイントが問題なくヒットするため、問題があるのは単体テストだけです。また、単体テストを含むテスト iOS アプリを作成しました。アプリと単体テストの両方が正常に機能しません。
  • ビルド設定は問題ないようです (他にチェックすべきものがあれば教えてください):
    • デバッグ シンボルの生成 = はい
    • 最適化レベル = なし [-O0] (デバッグ用)
  • (-[NSException raise] または objc_exception_throw で) シンボリック ブレークポイントを設定しても役に立ちません。
  • プロジェクトのリロードまたは Xcode の再起動は役に立ちません。

単体テストでブレークポイントに到達するには、他に何ができますか?

4

2 に答える 2

2

単体テスト ターゲットの [ビルド後のテスト] ビルド設定 ([単体テスト] の下) を確認します。

この設定が「はい」に設定されている場合、ターゲットがビルドされた後、Xcode を介して (再度) 実行される前に、Xcode の「外部」でシェル スクリプトを介してテストが実行されます。したがって、スクリプトの実行中にテストが失敗した場合、2 回目の実行 (Xcode の「内部」) は発生しないため、ブレークポイントはヒットしません。

-また-

デバッグしようとしているテストが失敗した場合、 -setUp メソッドで失敗が発生している可能性があります。これは、setUp で OCMock を使用していて、セットアップ中にたまたま呼び出されたメソッドをスタブするのを忘れた場合に発生する可能性があります。

于 2013-01-08T20:05:50.620 に答える