Не удается загрузить базовый модуль для XCTest


Я работаю в swift на Xcode и по умолчанию он создает тестовый файл, который ссылается на XCTest.

когда я устанавливаю целевое членство в свой основной проект, это вызывает эту ошибку

не удается загрузить базовый модуль для XCTest

Если это целевое членство не установлено, тесты выполняются правильно, и все работает нормально.

PS: Я новичок в swift, и это, вероятно, глупый вопрос (пожалуйста, просветите меня)

10 132

10 ответов:

основной проект не связан с платформой XCUnit. Вы должны создать отдельный целевой объект тестирования для вашего проекта, если он еще не существует, и добавить исходные файлы тестов в этот целевой объект.

  1. выберите ваш проект в навигаторе проекта. Это откроет настройки проекта в Редакторе.
  2. Нажмите кнопку " + " в нижней части столбца со списком Ваших целей.
  3. если вы работаете над проектом 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.

а затем добавить свои тесты там. Это сработало для меня. Проблема была в том, что я не выбрал создать модульные тесты, когда я создал свой проект. Надеюсь, это кому-то поможет.

эта проблема возникает два раза в вашем проекте.

  1. когда вы не добавляете UnitTestingBundle в свой проект при создании нового проекта.
  2. при установке CocoaPods в вашем проекте когда-нибудь не каждый раз.

1:Ответ:

  • перейти к файлу нажмите на файл.

  • затем вы видите первый вариант новый нажмите на него.

  • после нажатия на нее вы увидите Некоторые опции нажимают на цель.

  • а затем в строке поиска поиска IOS модуль тестирования пакета и добавить проблема решена.

  • Если компилятор не может дать вам разрешение на добавление этого, попробуйте второй метод, когда указано ниже.

2. Ответ На Проблему CocoaPod:

  • перейти к продукту нажмите на продукт.

  • Нажмите кнопку Очистить или нажмите cmd+k.

  • проблема решена.

Я получаю эту ошибку, если я создаю цель macOS dynamic framework, которая ссылается на XCTest.framework (цель является целью фреймворка, а не целью тестирования!).

в этом случае проблема решается путем добавления

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks

к проекту "построить настройки / пути поиска фреймворка".

убедитесь, что целевое членство отключено для всех модулей при выборе тестовой платформы. Вы можете просмотреть целевой параметр членства, выбрав вид - > утилиты - >показать инспектор файлов

Я сделал все вышеописанное, но все же мне не разрешили получить доступ к методам, которые я хотел проверить. Но прежде чем я написал какой-либо тестовый случай, построил проект один раз, а затем методы были доступны для тестирования. Так что попробуйте и дайте мне знать, если он решил какие-либо проблемы.

У меня была такая же проблема и решение для меня было:

  1. выберите пункт мои схемы
  2. Редактировать Схему...
  3. затем при открытии окна конфигурации схемы выберите левую вкладку с именем "тест" для перенаправления сюда: enter image description here
  4. как вы можете видеть, что мои UITests не добавлены здесь, но существуют в моем проекте, поэтому мне нужно было просто нажать кнопку "Плюс" и выбрать цель UITests следующим образом: enter image description here
  5. затем нажмите Кнопка" Добавить " и закрыть вид конфигурации
  6. закончить с чистой проекта и повторите попытку он должен работать
  7. и не забудьте проверить, что тоже: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 и другие

  1. The ClassTest.swift файл для целевого членства, гарантируя, что это только прикрепленный к цели испытания.
  2. 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}"]

Примечание.: Это очень крайний случай и полностью человеческая ошибка, но я думал, что это стоит отметить.