6

最近、iPhone 用に作成したアプリの単体テストを開始しました。少し最適ではないように思えても、独自のテストを作成するための基本はあります。しかし、gcov を使用してコード カバレッジ分析を設定するのに本当に問題があります。

私はここの指示に従いました: http://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/、他の場所でも非常によく似ています。Xcodeで何か間違ったことを入力した場合に備えて、Mac用のツールボックスからGoogleのAppleScriptを使用してみました。

Apple のiPhoneUnitTests サンプルをベース プロジェクトとして使用し、単に Google の AppleScript を実行して CalcTests ターゲットに対するコード カバレッジ テストを有効にし、ソースが豊富で自動化された、動作しない例を取得しました。私がどのようなシナリオを使用しても、私自身のコード、Apple のコード、適切な変数を手動で設定するか、Google の AppleScript に任せても、テストの実行が終了すると、デバッグ コンソールに次のエラーが表示されます。

profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcViewController.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/Calculator.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcAppDelegate.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/main.gcda:Skip

gcda ファイルが作成されていないため、分析するものがありません。これについての助けをいただければ幸いです。

4

1 に答える 1

6

解決策は、これらのガイドがiPhoneシミュレーターで実行されているコードを参照していることです。私はアプリケーションレベルのテストを実行しているため、クロスプロファイリングを行っており、この情報に従う必要があります。

次に、環境変数GCOV_PREFIXを設定して、アプリケーションのDocumentsディレクトリにダンプします。次に、XcodeのOrganizerを使用して、デバイスからアプリのパッケージをダウンロードし、Documentsディレクトリから.gcdaファイルを取得します。これはかなり面倒で、自動カバレッジテストにはほとんど役立ちませんが、サンドボックスで実行し、デバイスでのテストにのみ使用できるクラス(MediaPlayer.framework)を使用するという制約を考えると、これが唯一の解決策です。

于 2009-12-23T03:25:13.600 に答える