8

私は Core Data を扱っていますが、モデルがより複雑になるにつれて、導入する新しい変更によってモデルが他の部分で予期せず壊れないようにする必要があります。

モデルで何かを変更するたびに、単体テストを作成して実行できます。何かが壊れた場合、モデルに問題があるか、少なくともメイン コード/テストでいくつかのクエリを変更する必要があることを知っています。

私はいくつかの便利なメソッドにアクセスするためにMagicalRecordを使用しています。同じ理由で、利便性のためにココアポッドも使用します。問題は、cocoapods が静的ライブラリを作成してターゲットにリンクすることですが、Xcode では、問題のターゲットがリンクするのと同じライブラリ/フレームワークにリンクするように新しいテスト ターゲットが自動的に構成されません。

静的ライブラリに対して XCTest リンクを設定するにはどうすればよいですか?

これは MagicalRecord/Core Data で役立つだけでなく、外部ライブラリを使用している場合は、ライブラリの更新によってアプリが壊れないことを確認するためのテストを行うことをお勧めします。

4

2 に答える 2

11

ココアポッドを使用している場合は、単純にlink_withを使用してテスト ターゲットを含めることができますが、ココアポッドによって作成されていない静的ライブラリを使用している場合は、次のことができます。

(私は今でも cocoapods ライブラリを使用していますが、cocoapods ライブラリを使用していない場合でも考え方は同じです)

新しいテスト ターゲットを作成したら、プロジェクト ナビゲーターでプロジェクト ルート ノードをクリックし、テスト ターゲットを選択します。に移動しBuild Settingsて検索しHeader Search Pathsます。Header Search Pathsアイテムを ダブルクリックして入力し、すべての cocoapods ライブラリ ヘッダーをインポートするか、個別に入力するか を${SRCROOT}/Pods/Headers選択します。recursive${SRCROOT}/Pods/Headers/MagicalRecordnon-recursive

検索しLinkingOther Linker Flags追加-ObjC

テスト ターゲットが選択されたままの状態で、 に移動しBuild PhasesLink Binary With Librariesクリックし、または他のライブラリを個別+に追加します ( ) 。libPods.alibPods-MagicalRecord.a

静的ライブラリを使用して XCTest を実行できるはずです。

オプション: -Prefix.pch ファイルで使用することがわかっているヘッダーをインポートしたいと思います。Project Navigator でターゲット テスト グループに移動できます。グループに移動しSupporting Files、ファイルを開き-Prefix.pchます。MagicalRecord については、次のように追加します。

#define MR_SHORTHAND
#import "CoreData+MagicalRecord.h"

詳細については:

于 2013-09-07T21:11:34.067 に答える
0

多くの戦いの後、次の手順がうまくいきました。

1) プロジェクト > 情報

構成では、メイン プロジェクト (Cocoapods によって生成された) と同じ構成ファイルを共有するようにテスト ターゲットを設定します。

ここに画像の説明を入力

ここで、XCUnit フレームワークが欠落しているため、いくつかのエラーが発生し始めるはずですが、CocoaPod でインポートされた外部ライブラリがテスト プロジェクトで表示されるようになりました。

2) [テスト ターゲット] > [ビルド設定] で、ヘッダー検索パスを探し、そこに次を追加します。

$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/Library/Frameworks
$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks

単体テスト フレームワークは Xcode アプリ内にあり、このヘッダーによって後で追加できるように公開されます。

3) テスト ターゲット > ビルド フェーズで、SenTestingKit.framework を追加します。

ここに画像の説明を入力

そして、それはこのように見えるはずです

ここに画像の説明を入力

そこから、すべてがうまくいくようです。幸運を。

于 2015-02-06T19:19:28.987 に答える