私のプロジェクトと単体テストにMeal.Swiftという名前のクラスがあります
func testMealInitialization() {
// Success case.
let potentialItem = Meal(name: "Newest meal", photo: nil, rating: 5)
XCTAssertNotNil(potentialItem)
// Failure cases.
let noName = Meal(name: "", photo: nil, rating: 0)
XCTAssertNil(noName, "Empty name is invalid")
}
しかし問題は次のとおりです:未解決の識別子「食事」の使用
Xcode 7は@testable import
ステートメントを追加して、ユーザーテストを簡素化します。単体テストクラスファイルの先頭に、次のステートメントを追加します。
@testable import MyApp
ここでMyAppはiOSアプリの名前です。これで、単体テストのターゲットがアプリ内のクラスを見つけてテストを実行できるようになります。 Xcodeがアプリクラスを見つけられないというリンクエラーが発生した場合は、製品モジュール名のビルド設定の値が@testable import
ステートメントで使用する名前と一致していることを確認してください。この例ではMyAppです。
@testable import
が機能しない場合の回避策は、アプリクラスを単体テストターゲットのメンバーにすることです。ファイルインスペクタを使用して、Xcodeでファイルのターゲットメンバーシップを設定できます。
私もこの問題に遭遇しました、私のために働いたのは私のテストファイルをリロードして再入力することです
@testable import FoodTracker
その後、その時点で、FoodTrackerクラス(Mealクラス)が検出され、エラーはなくなりました。
食事クラスをクリックします。次に、右側に「ターゲットメンバーシップ」セクションが表示されます。テストプロジェクトを選択します。 (Xcode 7)Voilà。
テストするクラスをTarget-> BuildPhases-> Compile Sourcesに追加するだけです。
私の場合、作成したばかりの新しいクラスでのみエラーが発生し、混乱します。だから、それは私の新しいクラスのクラスメンバーシップの下のselect nit Test targetで機能します。または、クラスを削除して新しいクラスを再度作成し、その新しいクラスでnit Test Targetを選択します。