私はSwiftでXcodeに取り組んでいて、デフォルトではXCTestを参照するテストファイルを作成します。
ターゲットメンバーシップをメインプロジェクトに設定すると、このエラーが発生します。
XCTestの基礎となるモジュールをロードできません
このターゲットメンバーシップが設定されていない場合、テストは正しく実行され、すべてうまく機能します。
シモンズ:私はスウィフトに不慣れです、そしてそれはおそらく愚かな質問です(私を啓発してください)
メインプロジェクトはXCUnitフレームワークとリンクしていません。プロジェクト用に別のテストターゲットを作成し(まだ存在していない場合)、そのターゲットにテストソースファイルを追加します。
iOSプロジェクトテンプレートを使用している場合、iOS > Test > iOS Unit Testing Bundle
を選択します。
OS Xプロジェクトテンプレートを使用している場合、OS X > Test > OS X Unit Testing Bundle
を選択します。
問題のファイルがメインターゲットではなくテストターゲットのみにあることを再確認してください。テストターゲットのみがインポートするフレームワークを持ちます。
テストファイル/クラスをメインターゲットに追加しただけで、誤ってテストターゲットに追加したわけではありません。そのような単純な。
溶液:
1)メインターゲットの[Build Phases]タブの[Compile Sources]リストからテストファイルを削除します。
2)テストターゲットの[Build Phases]タブの[Compile Sources]に同じファイルを追加します。
それは問題を解決しなければなりません
XCTest.framework
にリンクするmacOS動的フレームワークターゲットを作成すると、このエラーが発生します(ターゲットはフレームワークターゲットであり、テストターゲットではありません)。
この場合、問題は以下を追加することによって解決されます。
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks
プロジェクトの「ビルド設定/フレームワーク検索パス」へ。
このようなStack Overflowページをめぐる多くのトラブルシューティングとバウンスの後、私は他のiOS Unit Testのトラブルシューティングページで言及されていない詳細を1つ見つけることができました。
プロジェクトでCocoaPodを使用している場合は、メインアプリケーションのターゲット内にテストターゲットを入れ子にしてください。テストターゲットを作成した場合、ポッドファイルに含まれていない可能性がありますafterpod init
を実行しています。あなたのポッドファイルは次のようになります。
target 'YourApp' do
target 'YourAppTests' do
inherit! :search_paths
# Pods for testing
end
end
忘れずにpodfileを保存して、pod install
を実行してください。
それが役に立てば幸い!
これは少し遅れるかもしれませんが、あなたがしなければならないことは以下のとおりです。
ファイル>新規>ターゲット> iOS Unit Testing Bundleをクリックします。
そしてそこにあなたのテストを追加します。これは私のために働きました。問題は、プロジェクトを作成したときにユニットテストの作成を選択しなかったことです。これが誰かに役立つことを願っています。
この問題はプロジェクトで2回発生します。
1:答え:
ファイルへ移動ファイルをクリックしてください。
それからあなたは最初のオプションを見ますNewそれをクリックしてください。
それをクリックした後、あなたはTargetでSome Option Clickが表示されます。
そして、検索バーの検索IOS単体テストバンドルと問題の追加が解決されました。
compilerがこれを追加する許可をあなたに与えることができないならば、次に与えられるときSecond Methodを試してください。
2。CocoaPodの問題に答える:
製品へ行く製品をクリックしてください。
クリーンをクリックするか、cmd + kを押します。
問題は解決しました。
テストフレームワークが選択されたときに、すべてのモジュールに対してターゲットメンバーシップがチェックされていることを確認してください。 「表示」 - >「ユーティリティ」 - >「ファイルインスペクタを表示」を選択すると、「ターゲットメンバーシップ」オプションを表示できます。
一般に認められている答えはこの問題をほとんどの場合解決していますが、このエラーに遭遇するもう1つの方法があります。
あなたがすでにそれを確実にしているならば:
@pwc @ nick-n他が指摘しているように
ClassTest.Swift
ファイルがのみ Testingターゲットに添付されていることを確認します。ClassTest.Swift
はnotあなたのメインアプリターゲットの下に表示されています>ソースの構築>ソースのコンパイルこれがあなたがチェックできる他のものです:
.podspecs
ファイルに
あなたのsource_files
が直接的または間接的にtestingディレクトリを含んでいないことを確認してください。
例:
s.source_files = ["Classes/**/*.{Swift}", "Classes/**/*.{xib}"]
s.exclude_files = ["Classes/Exclude", "Classes/MyPodProjTests/"]
Classes/**/*.{Swift}
には、ディレクトリMyPodProjTests
を除外する必要があるという事実をオーバーライドするすべてのものが含まれています。
Solution:
s.source_files = ["Classes/MyPodProj/**/*.{Swift}", "Classes/**/*.{xib}"]
注:これは極端にエッジケースであり、完全にヒューマンエラーですが、指摘する価値があると思います
私は同じ問題を抱えていて、私にとっての解決策は以下の通りでした。
この答えがお役に立てば幸いです。
シモンズ:最後の1つはビルド設定の私のテストターゲットで私は正しく設定されていないこれらのプロパティをチェックしなければならなかったと思います:
DEBUG_INFORMATION_FORMAT = dwarf;
ONLY_ACTIVE_Arch = YES;
VALIDATE_PRODUCT = NO;
私は上記すべてを行いましたが、それでもテストしたいメソッドにアクセスすることは許可されませんでした。しかし、私がテストケースを書く前は、一度プロジェクトをビルドしてから、メソッドをテストすることができました。それでそれを試してみて、それがいずれかの問題を解決したかどうか私に知らせてください。