4

いくつかの深刻なフラストレーションと頭痛の種の後、既存のプロジェクトに単体テストを追加することができました。問題は、テストが 50% の確率でしか実行されないことです。内部に STFail マクロを含むテスト メソッドがあります。テストを実行すると、期待どおりに失敗します。次に、コード/設定に触れずにテストを再度実行すると、テスト フィクスチャのブレークポイントにヒットすることなくパスします。これが発生すると、コンソールは次の出力を出力します。

... octest のテスト バンドルの実行可能ファイルが見つかりませんでした。

私はグーグルを持っていましたが、この正確な問題を抱えている人は多くないようで、この件に関する他の議論が頭を悩ませています。誰かがこの問題に光を当てることができれば、それは非常に高く評価されます.

ありがとう。

4

1 に答える 1

3

私はあなたの新しいプロジェクトを取り、問題を再現しました。いくつかの問題があり、1つは不明です。

テストターゲットのビルドフェーズ:

  • ターゲットの依存関係:メインターゲットが常に最初にビルドされるように、TestAppを指定します。
  • ソースのコンパイル:主要なソースを含めないでください。TestAppUnitTests.mmのみを含める
  • バイナリとライブラリのリンク:必要なのはSenTestingKit.frameworkだけです。FoundationとUIKitを適切に投入できます。
  • バンドルリソースのコピー:何も含まれていないはずです。(後で、テスト固有のリソースが必要になる場合があります。)

テストターゲットのビルド設定:

  • バンドルローダーは$(BUILT_PRODUCTS_DIR)/TestApp.app/TestApp
  • テストホストは$(BUNDLE_LOADER)

主なターゲットのスキーム:

  • テスト->情報はテストターゲットを指定する必要があります

しかし、私がこれらすべての変更を加えたとしても、あなたのプロジェクトはまだ奇妙な振る舞いをしています。シミュレーターは、文字通り${PRODUCT_NAME}という名前のアプリのバージョンを取得することがあります。アプリをデバッグしても、ログナビゲータに「Debug${EXECUTABLE_NAME}」と表示されることがあります。だから他の何かがおかしい、そして私は何を知らない。

最善の解決策は、「単体テストを含める」を指定して、新しいプロジェクトを最初から作成することです。これが機能することを確認しました。

于 2012-09-27T15:26:52.040 に答える