Тест Xcode не определяет мой класс

У меня есть класс с именем Meal.swift в моем проекте и unit test

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")

}

Но проблема в том, что: Использование неразрешенного идентификатора "Питание"

Ответы

Ответ 1

@testable import MyApp должен работать нормально. Не забудьте установить соответствующие конфигурации в Debug для вашей цели UITest.

введите описание изображения здесь

Ответ 2

Xcode 7 добавляет оператор @testable import для упрощения тестирования пользователей. В верхней части ваших unit test файлов классов добавьте следующую инструкцию:

@testable import MyApp

Где MyApp - имя вашего приложения iOS. Теперь цель unit test должна быть в состоянии найти классы в вашем приложении и запустить тесты. Если вы получите ошибки в ссылках, говорящие, что Xcode не может найти ваши классы приложений, убедитесь, что значение параметра сборки модуля продукта соответствует имени, которое вы используете в инструкции @testable import, MyApp в этом примере.

Если @testable import не работает для вас, обходным путем является создание членов вашего класса приложений из unit test. Вы можете установить целевое членство файла в Xcode, используя инспектор файлов.

Ответ 3

Я также столкнулся с этой проблемой, что сработало для меня - это перезагрузка моего тестового файла и переименование

@testable import FoodTracker

то в этот момент он обнаружил мои классы FoodTracker (класс Meal), и ошибки исчезли.

Ответ 4

Нажмите на свой класс Meal. Затем с правой стороны вы увидите раздел "Целевое членство". Выберите тестовый проект. (Xcode 7) Вуаля.

Ответ 5

Просто добавьте класс, который вы тестируете, в TargetBuild PhasesCompile Sources