Не удается загрузить базовый модуль для XCTest
Я работаю в swift на Xcode и по умолчанию он создает тестовый файл, который ссылается на XCTest.
когда я устанавливаю целевое членство в свой основной проект, это вызывает эту ошибку
не удается загрузить базовый модуль для XCTest
Если это целевое членство не установлено, тесты выполняются правильно, и все работает нормально.
PS: Я новичок в swift, и это, вероятно, глупый вопрос (пожалуйста, просветите меня)
10 ответов:
основной проект не связан с платформой XCUnit. Вы должны создать отдельный целевой объект тестирования для вашего проекта, если он еще не существует, и добавить исходные файлы тестов в этот целевой объект.
- выберите ваш проект в навигаторе проекта. Это откроет настройки проекта в Редакторе.
- Нажмите кнопку " + " в нижней части столбца со списком Ваших целей.
если вы работаете над проектом iOS шаблон выберите
iOS > Test > iOS Unit Testing Bundle
.если вы работаете над шаблоном проекта OS X выберите
OS X > Test > OS X Unit Testing Bundle
.
дважды проверьте, что файл, о котором идет речь, находится не в главной цели, а только в тестовой цели. Только тестовая цель будет иметь эту структуру для импорта.
вы только что добавили свой тестовый файл / класс в основную цель, а не в тестовую цель по ошибке. Просто.
устранение:
1) Удалите тестовый файл из списка "Compile Sources" на вкладке "Build Phases" для основной цели
2) Добавьте тот же файл в "Compile Sources" на вкладке "Build Phases" для test target
Это должно решить проблему
Это может быть немного поздно, но то, что вам нужно сделать, это:
нажмите на Файл > Создать > цель > пакет модульного тестирования iOS.
а затем добавить свои тесты там. Это сработало для меня. Проблема была в том, что я не выбрал создать модульные тесты, когда я создал свой проект. Надеюсь, это кому-то поможет.
эта проблема возникает два раза в вашем проекте.
- когда вы не добавляете UnitTestingBundle в свой проект при создании нового проекта.
- при установке CocoaPods в вашем проекте когда-нибудь не каждый раз.
1:Ответ:
перейти к файлу нажмите на файл.
затем вы видите первый вариант новый нажмите на него.
после нажатия на нее вы увидите Некоторые опции нажимают на цель.
а затем в строке поиска поиска IOS модуль тестирования пакета и добавить проблема решена.
Если компилятор не может дать вам разрешение на добавление этого, попробуйте второй метод, когда указано ниже.
2. Ответ На Проблему CocoaPod:
перейти к продукту нажмите на продукт.
Нажмите кнопку Очистить или нажмите cmd+k.
проблема решена.
Я получаю эту ошибку, если я создаю цель macOS dynamic framework, которая ссылается на
XCTest.framework
(цель является целью фреймворка, а не целью тестирования!).в этом случае проблема решается путем добавления
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks
к проекту "построить настройки / пути поиска фреймворка".
убедитесь, что целевое членство отключено для всех модулей при выборе тестовой платформы. Вы можете просмотреть целевой параметр членства, выбрав вид - > утилиты - >показать инспектор файлов
Я сделал все вышеописанное, но все же мне не разрешили получить доступ к методам, которые я хотел проверить. Но прежде чем я написал какой-либо тестовый случай, построил проект один раз, а затем методы были доступны для тестирования. Так что попробуйте и дайте мне знать, если он решил какие-либо проблемы.
У меня была такая же проблема и решение для меня было:
- выберите пункт мои схемы
- Редактировать Схему...
- затем при открытии окна конфигурации схемы выберите левую вкладку с именем "тест" для перенаправления сюда:
- как вы можете видеть, что мои UITests не добавлены здесь, но существуют в моем проекте, поэтому мне нужно было просто нажать кнопку "Плюс" и выбрать цель UITests следующим образом:
- затем нажмите Кнопка" Добавить " и закрыть вид конфигурации
- закончить с чистой проекта и повторите попытку он должен работать
- и не забудьте проверить, что тоже:https://developer.apple.com/library/archive/qa/qa1954/_index.html
надеюсь, этот ответ поможет.
PS: еще одна мысль в моей тестовой цели в настройках сборки я должен был проверить эти свойства, которые не были настроены правильно:
DEBUG_INFORMATION_FORMAT = dwarf; ONLY_ACTIVE_ARCH = YES; VALIDATE_PRODUCT = NO;
хотя принятый ответ решает эту проблему в большинстве случаев, есть еще один способ, которым вы можете столкнуться с этой ошибкой.
если вы уже обеспечили:
как указал @pwc @nick-n и другие
- The
ClassTest.swift
файл для целевого членства, гарантируя, что это только прикрепленный к цели испытания.- The
ClassTest.swift
и не видны под вы главная цель приложения > построить источники > скомпилировать источникивот что еще можно проверить:
в своем
.podspecs
fileубедитесь, что ваш
source_files
прямо или косвенно не включает в себя каталог тестирования.например :
s.source_files = ["Classes/**/*.{swift}", "Classes/**/*.{xib}"] s.exclude_files = ["Classes/Exclude", "Classes/MyPodProjTests/"]
отметим, что
Classes/**/*.{swift}
включает в себя все, что переопределяет тот факт, что каталогMyPodProjTests
должны быть исключены.устранение:
s.source_files = ["Classes/MyPodProj/**/*.{swift}", "Classes/**/*.{xib}"]
Примечание.: Это очень крайний случай и полностью человеческая ошибка, но я думал, что это стоит отметить.