2016-12-14 14 views
1

ユニットテストを実行中に生成されたファイルを保存しようとしていますが、後で別のシミュレータで同じテストを使用して/別の時間に読み込まれます。同じシミュレータでアプリを実行するたびにNSDocumentsDirectoryが変更されるため、NSDocumentsDirectoryを使用することはできません。異なるテスト実行の間にファイルをロードできる場所に書き込むことができる共有ディレクトリは何ですか?またどのパスに書き込むことができますか?iOSシミュレータ実行間の共有ディレクトリ

注:

  • テストが実行として記録されたデータが記録されています。私はhttpトラフィックを記録し、後で読み込むファイルに書き込みます。

  • 同じシミュレータですべてのテストを実行しているので、シミュレータ間でディレクトリにアクセスできない場合は問題ありません。同じシミュレータで別の実行でアクセスできるようにしたい。

答えて

2

iOSアプリケーションがiPhoneシミュレータ(NSDocumentDirectory)のドキュメントディレクトリに書き込むと、データは引き続き実行されます。アプリが再構築/再インストールされても、データはアプリに残るが、新しいNSDocumentDirectoryに残る。ルートアプリのディレクトリが異なっていても、ドキュメントは自動的に新しいNSDocumentDirectoryに移動されます。

同じデバイス上にある場合と同じ方法で同じシミュレータ上で動作するので、動作します。何もする必要はありません。

私は同じ絶対ディレクトリにすべての時間を見ているのMac OS XのFinderや(私にとっては)、端末を使用してトリックをに停止することが分かった、とログ何であれ、現在のドキュメントディレクトリにアプリを取得であり、その新しいディレクトリに文書が存在するかどうかを確認します。私は、システムをいつでも再構築/私は、アプリケーションを再インストールするたびに私のためのドキュメントを移動したことがわかりました。

私が知る限り、実際のデバイスのAppをApp Storeからアップデートするときと同じように見えます。私はそれが新しいアプリをインストールし、古いアプリから新しいアプリにすべてのデータを移動し、古いアプリを削除すると思います。

+0

これは本当に便利な情報です! – Minimi

1

シミュレータは、別々のデバイスのようなものです:彼らは、ファイル 、そしてあなたのアプリ の(再構築)からできる新規インストールどちらを共有することはできません。 私はあなたがファイルを生成し、手動でそれらを見つける必要があるだろうと思うin the simulated app container

次に、「コピーバンドルリソース」ビルドフェーズでファイルをテストターゲットに追加し、NSBundleでアクセスします。メインバンドルはテスト中でも依然としてアプリケーションになりますが、+bundleForClass:という正しいバンドルと、テスト対象にのみ存在するクラスを見つけることができます。


Son of a Beach's answerこれは間違っていることを指摘しています。

+0

ファイルがテスト中に生成されるため、このことが困難になります。ファイルは、リクエストから取得してからファイルに書き込むhttpトラフィックです。次回はテストが実行され、記録されたレスポンスがあれば使用します。だから私はコピーファイルビルドフェーズにそれらを追加することはできません。 – Minimi

+0

私はあなたが手動でファイルをコピーしなければならないと信じています。各シミュレータは別のデバイスを表し、実際のデバイスと同じようにそれぞれのアプリケーションにサンドボックスされています。 –

+0

どうやって手作りを意味するのですか?だから私はまだテストが実行されていないため、まだ作成されていないディレクトリにファイルをコピーしてコピーしなければならないでしょうか? – Minimi

関連する問題