IOSアプリでクラスをテストしようとしています。 import Pickle
テストファイルの先頭にPickleTests.Swift
を追加して、すべてのクラスを含むターゲットPickle
をテストターゲットPickleTests
にインポートしようとしています。 、しかしエラーが出続けます。
私が受け取り続けるエラーは、「ブリッジヘッダーのインポートに失敗しました(ブリッジヘッダーへのパス)」です(括弧内ではなく、ブリッジヘッダーへのパスがエラーに表示されます)。Pickle
ターゲットのビルド設定で「Defines module」を「Yes」に設定しようとしましたが、それでも機能しません。ビルド設定で、ブリッジヘッダーファイルへの正しいパスがあることも確認しました。
テストの設定方法に関するアイデアはありますか? Xcode 6.3.2を使用しています。追加情報が必要な場合はお知らせください。
新しいタブで画像を開くと、画像が大きく表示されます。
これを手伝ってくれた@mattに感謝します!
画像を右クリックして新しいタブで開くと、画像が大きく表示されます。
https://github.com/CocoaPods/CocoaPods/issues/2695 で説明したように、問題はプロジェクトの一部としてCocoapodsを使用することにあるようです。この問題を解決するリンクの下部にある答えは、アプリケーション設定をクリックしてから、プロジェクトInfo
(ターゲットの設定ではない)をクリックすることです。そこにConfigurations
設定が表示されます:
また、構成設定に2つのターゲットがあり、メインターゲットがCocoapodsにリンクされている間、テストターゲット構成設定がnoneに設定されていることにも気付くでしょう。修正は、テストターゲットの横にあるNone
値を、メインターゲットと同じ値に変更することにあります。
これで、両方ともCocoapodsにリンクされました。メインターゲットのDefines module
でBuild Settings
がYes
に設定されていることを確認し、プロジェクトをビルドすると、テストファイルのエラーが解消されます。
また、この修正を行った後、別のエラーが発生し、リンカーがテストターゲットでライブラリが見つからないというエラーが発生しました。この欠落したライブラリは、プロジェクトで使用していた別の依存関係であり、メインターゲットのLink Binary with Libraries
のBuild Phases
設定にリンクされているすべての依存関係がテストにコピーされたことを確認することで、このエラーを解決しましたLink Binary with Libraries
設定内のターゲットのBuild Phases
。
これを行う必要はありません。 Podfileで link_with を使用できます。あなたの場合、あなたはそうするでしょう。
link_with 'Pickle', 'PickleTests'
その後 pod update
テストクラスの上にモジュールをインポートする
@testable import myModuleName
モジュール名はTarget->Build Settings-> Product Module Name
で確認できます。
次に、そのモジュールに属する任意のクラスを使用できます。クラスを1つずつインポートする必要はありません。
FWIW、Xcode 7で、アノテーションを付けてインポートします:@testable。例:
import Pickle
@ImportTests
次に、コードの完了とコンパイルでクラスを確認できます。ソース: https://www.natashatherobot.com/Swift-2-xcode-7-unit-testing-access/