Я пытаюсь реализовать некоторые тесты ui в моем проекте. Все идет хорошо, пока я держу это просто: запишите тестовый пример, добавьте несколько утверждений, затем запустите тест. Это прекрасно работает, однако, когда я пытаюсь получить доступ к модулю приложения из моего теста, компоновщик выдает ошибку (см. Ниже):
В исходном файле приложения:
func foo() {
assert(true)
}
В тестах пользовательского интерфейса:
import XCTest
@testable import MyApp
func testExample() {
foo()
}
Ошибка:
Undefined символы для архитектуры i386: "MyApp.foo() → ()", ссылка: MyAppUITests.MyAppUITests.testExample(MyAppUITests.MyAppUITests)() → () в MyAppUITests.o ld: Символ не найден для архитектуры i386 clang: error: linker command не удалось с кодом выхода 1 (используйте -v, чтобы увидеть вызов)
Undefined символы для архитектуры x86_64: "MyApp.foo() → ()", ссылка: MyAppUITests.MyAppUITests.testExample(MyAppUITests.MyAppUITests)() → () в MyAppUITests.o ld: символ (ы), не найденный для архитектуры x86_64
Я слышал подобную проблему, описанную здесь:
https://forums.developer.apple.com/thread/20609
но никакого решения. Мне кажется, что @testable
просто работает неправильно. Парень на developer.apple.com попытался обходным путем, добавив тестовый хост и загрузчик пакетов в настройки, но я не думаю, что это правильный подход. Я думаю, что @testable
должен просто заставить все работать, и на данный момент это не похоже. Любая помощь ценится!