Ответ 1
@testable import MyApp
должен работать нормально. Не забудьте установить соответствующие конфигурации в Debug
для вашей цели UITest
.
У меня есть класс с именем 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")
}
Но проблема в том, что: Использование неразрешенного идентификатора "Питание"
@testable import MyApp
должен работать нормально. Не забудьте установить соответствующие конфигурации в Debug
для вашей цели UITest
.
Xcode 7 добавляет оператор @testable import
для упрощения тестирования пользователей. В верхней части ваших unit test файлов классов добавьте следующую инструкцию:
@testable import MyApp
Где MyApp - имя вашего приложения iOS. Теперь цель unit test должна быть в состоянии найти классы в вашем приложении и запустить тесты. Если вы получите ошибки в ссылках, говорящие, что Xcode не может найти ваши классы приложений, убедитесь, что значение параметра сборки модуля продукта соответствует имени, которое вы используете в инструкции @testable import
, MyApp в этом примере.
Если @testable import
не работает для вас, обходным путем является создание членов вашего класса приложений из unit test. Вы можете установить целевое членство файла в Xcode, используя инспектор файлов.
Я также столкнулся с этой проблемой, что сработало для меня - это перезагрузка моего тестового файла и переименование
@testable import FoodTracker
то в этот момент он обнаружил мои классы FoodTracker (класс Meal), и ошибки исчезли.
Нажмите на свой класс Meal. Затем с правой стороны вы увидите раздел "Целевое членство". Выберите тестовый проект. (Xcode 7) Вуаля.
Просто добавьте класс, который вы тестируете, в Target → Build Phases → Compile Sources