2

Realm チームの誰かがこの質問を見て回答してくれることを願っています

Cedar を使用して BDD スタイルのテストを作成するプロジェクトがあります。Objective C と Swift ファイルが混在するプロジェクトがあります。これらの迅速なファイルの一部は、カスタム Realm モデル用です。CocoaPods を使用して Realm をプロジェクトにインストールします。

これまでに見た推奨設定は次のとおりです。

  1. PodfileRealm/Headersでテスト ターゲットとRealmメイン ターゲットのみに使用 - これにより+[RLMObjectBase ignoredProperties]: unrecognized selector sent to classエラーが解決されます。

私のアプリはビルドして実行しますが、今はこれを取得しますRLMObject subclasses with the same name cannot be included twice in the same target

すべてのテスト ターゲットから Swift オブジェクトを削除し、それらをメインのターゲットのみに残すと、テスト ファイル内にそれらが表示されなくなり、次のポイントに進みます。

  1. Swift ファイルで @testable を使用します。迅速な XCTest クラスでテストしている場合、これは良いアドバイスですが、Cedar では機能しません (または、機能させる方法がわかりません)。

私の質問は、このセットアップを機能させる方法はありますか? 正確な手順は何ですか?

4

1 に答える 1

1

返信を待っている間に、この素​​晴らしい紳士のブログ投稿で答えを見つけることができました:)

  1. すべての .swift ファイルで、ターゲット メンバーシップがメイン ターゲットのみに設定されていることを確認します。
  2. 質問で述べたように、PodfileRealmでメインターゲットとRealm/Headersテストターゲットに追加します
  3. すべてのテスト ターゲットがBuild Settings -> Product Module Nameメイン ターゲットと同じ値に設定されていることを確認します
  4. 私の場合、最後のステップと欠落$(CONFIGURATION_TEMP_DIR)/YourMainTargetName.build/DerivedSourcesしているステップは、テストターゲットに次のパスを追加しますBuild Settings -> Header Search Paths

複数ある場合はテスト ターゲットごとに、複数ある場合はビルド構成 (例: アルファ、ベータ、リリース) ごとに最終ステップを実行します。

これにより、テスト ターゲットから Swift クラスのメンバーシップを削除できるという利点も得られます (Objective-C クラスの場合と同様)。

これでテストが実行され、Realm は例外をスローしなくなります。

于 2016-09-13T11:32:45.397 に答える