1. ホーム
  2. ios

[解決済み] iOSのロジックテストでCocoaPodsを使用するとライブラリが見つからない

2022-04-28 17:08:10

質問

私のプロジェクトで、私のPodspecにあるいくつかのライブラリから機能を使用するクラスに対して、いくつかのiOSロジックテストを書こうとしています。私はXcodeで提供される標準的なユニットテストバンドルを使用しています(アプリケーションテストではなく、ユニットテストだけですが)。

例えば、私はMagical Recordを使用しており、そのライブラリは私のPodspecでリンクされています。ワークスペースのPodsプロジェクトに存在し、シミュレータやデバイス上でアプリを実行すると期待通りに動作します。しかし、Magical Recordを使用するオブジェクトをテストにリンクしようとすると、Magical Recordからのセレクタが見つからないというリンカーエラーが発生します。ロジックテストバンドル内のHEADER_SEARCH_PATHを更新したり、CocoaPodsが作成したheadersディレクトリにハードコーディングしてみましたが、うまくいきません。

CocoaPodsのライブラリを使用していないクラスに対するユニットテストは問題なく実行できるのですが。

私のやり方は間違っているのでしょうか?コンパイラにCocoaPodsライブラリを認識させるために何か他のことをすべきなのでしょうか?

どのように解決するのですか?

私は、私のアプリのメインターゲットが、CocoaPodsライブラリからどのように設定を受け取っているかを見て、この問題を解決しました。CocoaPodsには、Pods.xcconfigという名前の.xcconfigファイルが含まれています。このファイルには、ヘッダの検索パスがすべて含まれています。

プロジェクトナビゲータでプロジェクトを見て、情報タブをクリックすると、一番上のセクションにビルド構成が表示されます。異なる構成の三角形を開くと、メインターゲットの下にPodが表示されます。ドロップダウンをクリックして、ロジックテストターゲットにもPodsを追加する必要がありました。

の設定もコピーする必要がありました。 $(inherited)${PODS_HEADERS_SEARCH_PATHS} をメインターゲットからコピーして、Build Settings/HEADER_SEARCH_PATHS の下にあるロジックテストターゲットにコピーしてください。

最後に、ロジックテストターゲットの Link Binary with Libraries ビルドフェーズで libPods.a を追加する必要がありました。

どなたかのお役に立てれば幸いです。