«NSInternalInconsistencyException» при запуске UITesting с Xcode 7

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

Теперь я чувствую, что что-то упускаю.

Вот мой прогресс

  1. Включена опция «Тестирование пользовательского интерфейса» при создании нового проекта. Фактически, это добавляет мне цель. Так что мне должно быть хорошо - по крайней мере, я так думал. введите описание изображения здесь
  2. Файл swift в разделе «Тестирование пользовательского интерфейса» уже импортировал «XCTest» и является подклассом «XCTestCase».
  3. setup () запускает приложение XCUIApplication (). launch ()
  4. И я добавил следующее (нажав кнопку записи)  введите описание изображения здесь

А затем я провел этот тест.

Все это не удается даже до вызова теста, сразу после запуска приложения в setup () со следующим

*** Ошибка утверждения в - [XCUIApplication init], /Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-8170.3/XCTestFramework/UI Testing / XCUIApplication.m: 76 / Users / UserName / Documents / Projects / Testing / UiTesting / UITestingApp / UITestingApp.swift: 0: ошибка: - [UITestingApp.UITestingApp testSimpleTap]: не удалось: поймано «NSInternalInconsistencyException», «Путь к целевому приложению не указан в тестовой конфигурации:
testBundleURL: file: /// Пользователи /UserName/Library/Developer/CoreSimulator/Devices/E3201DC2-CAD3-48C3-95F5-15E18DCA1836/data/Containers/Bundle/Application/8B33FC59-FC03-41F8-BD21-43D81BA2D355-41F8-BD21-43D81BA2D355-AppxUITesting.appxUITesting.appx.Unitesting.app.Up. /
productModuleName: (null) testsToSkip: (null) testsToRun: (null) reportResultsToIDE: no sessionIdentifier: ‹__ NSConcreteUUID 0x7f93e146c0b0> F242796B-ED26-4AA7-861A-540D2D93CB8F pathingTocket (null) disablePerformanceMetrics: no TreatMissingBaselinesAsFailures: no baselineFileURL: (null) targetApplicationPath: (null) targetApplicationBundleID: (null) reportActivities: no

Кто-нибудь сталкивается с этим или есть предложения о том, что мне может не хватать?

Примечание. Я установил «Целевое приложение» цели тестирования пользовательского интерфейса для своего приложения.

Обновление: я заметил, что это применимо ко всем бета / финальным выпускам Xcode - обновил название соответственно


person SuPotter    schedule 28.08.2015    source источник
comment
Я просто попытался инициализировать XCUIApplication в setUp() методе и получил ту же проблему.   -  person Ducky    schedule 11.09.2015
comment
У меня такой же сбой с Xcode 7   -  person SuPotter    schedule 18.09.2015
comment
Я видел много блогов, в которых писалось о тестировании пользовательского интерфейса с помощью XCTest, но образцы кода не работали должным образом. Почему? Ржу не могу   -  person Ducky    schedule 18.09.2015


Ответы (13)


У меня была аналогичная проблема, и моя ошибка заключалась в попытке использовать код тестирования пользовательского интерфейса в обычной тестовой цели. Как только я создал новую цель, начиная с «Пакет тестирования пользовательского интерфейса iOS» и скопировал туда код, ошибка исчезла. Вот ветка, которая указала мне правильное направление: https://twitter.com/punksomething/status/609505357132500993 "Да , Я пытался использовать тест пользовательского интерфейса в обычной тестовой цели. Пришлось создать недавно добавленную цель теста пользовательского интерфейса "

person Matt Bearson    schedule 22.09.2015
comment
Да, я видел этот пост. У меня была правильная цель для начала. Благодарность - person SuPotter; 22.09.2015

Это случилось со мной, когда я пытался добавить новый класс в свою цель модульного теста, но выбрал шаблон UI Test Case Class вместо шаблона Unit Test Case Class.

Убедитесь, что вы всегда выбираете правильный. Несмотря на то, что они оба являются подклассом XCTestCase и вы назначаете их правильной цели, при выборе неправильного шаблона будет выдана эта ошибка.

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

person Viktor Kucera    schedule 09.06.2016
comment
Ага! Этот ответ действительно полезен, это один из тех случаев, когда вы можете смотреть весь день и не найти исправления, потому что, просто взглянув на файл, нет никаких доказательств того, что что-то не так. - person Dallas; 10.06.2016
comment
Я буквально наткнулся на ту же проблему. Хорошим намеком было сравнение шаблонов. Спасибо. - person DevAndArtist; 18.04.2017
comment
Спаси мою задницу! спасибо! - person Neal.Marlin; 10.04.2018
comment
Я бы хотел, чтобы это сработало для меня. Я пробовал оба, но проблема с UIApplication до сих пор не устранена. - person Alex Zavatone; 04.12.2018

Получил это после переименования цели. Решением было установить для «Целевого приложения» значение «Нет» в моей цели UITest и нажать build. После этого я вернул свое приложение «Нет», и ошибка была устранена. Я думаю, что очень вероятно, что переименование испортило настройки целевого приложения ui test target.

person TibiUr    schedule 20.06.2016
comment
Большое спасибо! У меня такая же проблема после переименования всего проекта. - person Kris; 16.07.2016
comment
Мне пришлось установить «Целевое приложение» на «Нет» и нажать build. Затем мне пришлось вернуть в проект «Целевое приложение». Спасибо! - person Jeroen Bakker; 26.07.2016

Я получаю утверждение

*** Ошибка утверждения в - [XCUIApplication init], /Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-8170.3/XCTestFramework/UI Testing / XCUIApplication.m: 76

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

Ключевое решение, которое я нашел, - это перезагрузить ваше устройство. Итак, вам не нужно удалять приложение, перезапускать Xcode или что-то в этом роде, просто перезагрузка должна заставить это утверждение исчезнуть.

person Samuël    schedule 13.09.2016
comment
Это спасло мне день. Демон тестирования на устройстве кажется не очень стабильным. - person Leo; 13.11.2016
comment
@Leo действительно демон не отвечает. Я даже попытался открыть кеш на телефоне без перезагрузки, но это не помогло. У меня сработал перезапуск, глупое, но эффективное решение. Спасибо. - person Laser Hawk; 10.04.2017

У меня была именно такая проблема. Я думаю, проблема возникла из-за переименования цели в процессе. Ни одно из исправлений здесь не помогло мне с моей проблемой. Поскольку я только начинал и еще не писал никаких тестов, я полностью удалил целевую задачу для тестов пользовательского интерфейса и снова добавил ее. То же имя, и все стало работать нормально.

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

person Bill Burgess    schedule 04.01.2016

После бесконечной настройки изменил Местоположение производных данных в «Xcode Preferences» с «Legacy» на «Custom» и заставил его работать!

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

person SuPotter    schedule 18.09.2015
comment
Для меня это не решит проблему :( - person DonnaLea; 30.09.2015
comment
Я бы проголосовал здесь против, однако, поскольку я теряю очки за это, я не буду этого делать. Это не ответ. - person Hola Soy Edu Feliz Navidad; 30.10.2017

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

Я решил удалить приложение XCUI, которое создается каждый раз, когда вы запускаете тесты и перезагружаете мое устройство, и оно сработало. однако, если я проведу тесты 7 или 8 раз после этого, ошибка вернется, и я просто повторю цикл решения. Если вы просто удалите приложение и не перезапустите его, оно не сработает.

Не уверен, что этот ответ сработает для всех, но это то, что сработало для меня.

person Bori Oludemi    schedule 24.08.2016

Удаление существующей цели и повторное создание устраняет проблему.

Убедитесь, что вы выбрали правильный набор тестов. Для тестирования пользовательского интерфейса это должен быть «Пакет тестирования пользовательского интерфейса iOS».

person arango_86    schedule 09.05.2017
comment
Это неправильный ответ. Это должен быть пакет тестирования пользовательского интерфейса iOS. - person Alex Zavatone; 04.12.2018
comment
изменен. Яблочко. :) - person arango_86; 06.12.2018

Это сработало для меня после того, как я прокомментирую приведенный ниже код в методе setup () моего TestCaseClass

continueAfterFailure = false & XCUIApplication (). launch ()

person Ranganatha G V    schedule 10.04.2017

Проблема: целевое приложение было изменено из-за изменения названия или любого другого изменения.

Решение: GoTo> General> выберите здесь целевое приложение.

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

person Alok    schedule 12.05.2020

У меня была эта проблема при запуске тестов Cucumberish на xCode 8.

Я исправил, перейдя в Project (в навигаторе проекта)> MyTestTarget> General

Здесь убедитесь, что в качестве целевого приложения выбрано приложение, для которого вы хотите запустить тесты. По умолчанию было установлено значение «Нет».

person Dev2rights    schedule 13.09.2016

Это может быть вызвано тем, что ваша цель не имеет настройки сборки TEST_TARGET_NAME или не соответствует точному имени тестируемой цели. Даже если целевое приложение настроено для вашего приложения на вкладке «Общие» целевого объекта, вам все равно потребуется TEST_TARGET_NAME параметр в настройках сборки.

person Diarrhio    schedule 29.12.2020

  1. Новые шаблоны создания файла UI Test Case и Unit Test Case не сильно отличаются (предыдущие две строки кода) , Выберите Unit Test в тесте, появится запрос «Приложение не запущено» , Добавление «XCUIApplication (). Launch ()» может решить проблему。
  2. Когда тест предлагал не находить элемент управления (например, UITextField) , Задайте для имени элемента управления \ identity -> accessibility -> Label \ то же имя, что и у элемента управления, используемого в UITestClass。
  3. Вы не добавили тестовый класс в соответствующие целевые объекты пользовательского интерфейса。
person Peng.YU    schedule 15.09.2017