Тесты пользовательского интерфейса Xcode 7, кнопка записи неактивна

Я пытаюсь добавить тесты пользовательского интерфейса в свой существующий проект с помощью Xcode 7. Однако кнопка записи теста пользовательского интерфейса всегда неактивна. Что мне здесь не хватает?

Я попытался перезапустить Xcode, очистить и перестроить проект и добавить новую цель тестирования пользовательского интерфейса. Кто-нибудь еще испытывает такое же поведение?


person rustylepord    schedule 07.08.2015    source источник


Ответы (16)


FWIW: У меня была эта проблема, и оказалось, что я пытался запустить симулятор не в той ОС.

Я пытался использовать iOS 8, а UITesting работает только в iOS 9+.

Переключите версию симулятора, и появится кнопка записи.

person Le Mot Juiced    schedule 23.01.2016
comment
Исправления проблем Apple... просто потрясающие! - person smac89; 05.03.2016
comment
тестовая функция должна быть запущена с тестом, и внутри нее должна быть хотя бы строка комментария. - person mehdi; 07.10.2018

Чтобы включить красную кнопку, вы должны навести курсор на тестовый метод:

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

person pableiros    schedule 20.11.2017

Я тоже застрял на этом некоторое время. Для записи вы должны находиться в классе, который Xcode распознает как содержащий тесты. Добавьте файл в цель тестирования пользовательского интерфейса, например:

import Foundation
import XCTest

class MyTests: XCTestCase {
    func testSomething() {

    }
}

Сохраните файл, очистите свой проект и переключитесь на другой файл, а затем вернитесь к этому. Тогда кнопка записи должна быть доступна.

person Maldron    schedule 07.08.2015
comment
Спасибо @Maldron, я делал это несколько раз, но ничего не вышло. Пришлось снова прочитать тестовую цель пользовательского интерфейса. Такое ощущение, что тесты пользовательского интерфейса действительно глючат. - person rustylepord; 08.08.2015
comment
Иногда Xcode дает сбой и не распознает тестовый пример как реальный тестовый пример (вы также не можете воспроизвести его, потому что параметр отсутствует на панели слева от объявления метода. В основном я преодолеваю их с помощью попеременно перезагружая Xcode и отключая и/или перезапуская симулятор или подключенное тестовое устройство.По крайней мере, мне не пришлось перезагружать мою машину! - person Apophenia Overload; 03.09.2015
comment
Перезапустив Xcode, я решил проблему. Спасибо - person Lisarien; 20.01.2016
comment
Мне нужно нажать на квадрат справа от функции testSomething(). Это сработало для меня - person kuzdu; 09.06.2016
comment
Простое дополнение: мой курсор должен был находиться внутри функции, которая начиналась с ключевого слова test в моем файле UITest, чтобы отображалась кнопка записи. - person Rob Norback; 14.04.2017
comment
Согласие с приведенными выше комментариями... физический выбор в функции testExample() или внутри нее с включенной кнопкой курсора... возможно, это просто мое незнание того, как работают эти тесты. - person Stamp; 11.09.2017

У меня была та же проблема, и мои настройки были правильными, iOS >= 9.0, цель была добавлена.

Проблема заключалась в индексации Xcode, которая заняла некоторое время (около 1 часа), после завершения индексации кнопка записи становится активной.

person toxicsun    schedule 19.04.2016
comment
Похоже, это правильный ответ на этот вопрос для недавно созданных целей тестирования пользовательского интерфейса. Моя индексация заняла более 20 минут, после чего кнопка была доступна. - person earnshavian; 25.04.2016
comment
Я ускорил этот процесс, выйдя из Xcode и снова запустив Xcode. Как только он закончил обработку и я обновил положение курсора, кнопка записи стала доступной. - person iCyberPaul; 11.05.2016
comment
Ожидание завершения индексации решило мою проблему. - person Morgz; 19.09.2016

Была такая же проблема на Xcode 8.3.

Я удалил метод tearDown

   override func tearDown() {
        super.tearDown()

    }

Так как не нужно было его использовать. Как только я добавил его обратно, кнопка записи была включена.

person Tal Zion    schedule 04.04.2017

Для меня проблема заключалась в том, что панель «Редактор версий» была открыта. Как только я переключился обратно на помощника редактора, все заработало.

person Chase Holland    schedule 26.04.2016

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

Одним из признаков того, что Xcode распознал метод, является ромб, появляющийся слева от имени метода:

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

person Manuel    schedule 10.03.2018
comment
вы правы, я проверил все эти решения, и единственное, что меня решает, это ваш ответ, спасибо - person khalid; 21.01.2019

Это немного глупо, но пропущено в некоторых статьях, которые я читал.

Убедитесь, что у вас есть UITesting Target, обычная тестовая цель мне не подошла.

person leopic    schedule 03.01.2016

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

person Tamás Sengel    schedule 13.03.2018
comment
Да .. Я думаю, что Xcode нужно обновить какое-то внутреннее состояние, которое происходит после выбора другого файла. - person hellaandrew; 23.05.2019

Проверьте редактор версий и исправьте его

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

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

person Rajneesh071    schedule 18.09.2018

Я сделал несколько вещей, чтобы активировать кнопку записи:

  1. (Необязательно, рекомендуется) — удалите все схемы TEST и цели TEST для вашего проекта, начните заново, создав новую цель UITest.
  2. Убедитесь, что ваша схема UITest и основная схема запуска проекта указывают на одну и ту же цель.
  3. Попробуйте удалить другие схемы UITest, если их можно легко воссоздать/не имеют абсолютного значения.
  4. Продукт> (Нажмите и удерживайте клавишу ALT)> Очистить папку сборки
  5. Продукт > Чистый (просто в целях безопасности)
  6. Закройте проект, выйдите из Xcode.
  7. Выйти из симулятора.
  8. Наконец, снова откройте Xcode, загрузите свой проект. Перейдите к файлу UITest, и маленькая красная кнопка радости должна быть доступна для использования.

Кроме того, убедитесь, что целью сборки/запуска является iPhone X 9.X.

person Frogger    schedule 13.03.2016

Я нашел другое решение, которое я не видел здесь.

Если вы создаете подкласс XCTestCase, снова измените свой класс, чтобы он наследовал его, сохраните файл, верните его обратно на имя вашего подкласса. Нет необходимости в чистке или сборке.

Для моего проекта у меня есть подкласс XCTestCase, назовем его APPMyTestCase. Я часто обнаруживаю, что кнопка записи неактивна, а иногда маленькие зеленые/красные кнопки рядом с каждым методом тестирования также не отображаются, чтобы запускать их по отдельности. Если я верну свой подкласс обратно на XCTestCase на секунду, все снова заработает.

Измените это:

class APPLoadingPageUITests: APPMyTestCase {
    // tests here
}

К этому:

class APPLoadingPageUITests: XCTestCase {
    // tests here
}

А потом вернемся к этому:

class APPLoadingPageUITests: APPMyTestCase {
    // tests here
}

Это исправило это для меня.

person Gordonium    schedule 29.04.2016

Оно сразу вернулось, когда я перешел на правильную схему. Убедитесь, что вы используете схему UI testing, так как средство записи тестов пользовательского интерфейса не может работать ни с одной другой.

person Wills    schedule 13.04.2018
comment
БОЛЬШОЕ СПАСИБО - person crgt; 19.10.2019
comment
Благодарю вас! На самом деле мне пришлось создать новую схему, потому что новая схема не создавалась автоматически, когда я создавал новую тестовую цель. - person Blake; 15.11.2019

Убедитесь, что у каждого файла есть только один подкласс XCTestCase. Вы хотите, чтобы имя файла и имена классов совпадали.

По моему опыту, даже когда у вас работают тесты пользовательского интерфейса, если вы добавите новый подкласс вашего рабочего подкласса XCTestCase в тот же файл, кнопка записи будет отключена (хотя все остальные тестовые пользовательские интерфейсы будут продолжать работать).

person blackp    schedule 01.06.2016

Когда я создавал UITest Target, новая схема одновременно не создавалась. Итак, мне пришлось создать новую схему с созданной мной тестовой целью. Это активировало кнопку записи.

person Blake    schedule 15.11.2019

Вы должны импортировать класс представления, который хотите протестировать. Затем поместите курсор в тестовый метод.

person lynulzy    schedule 30.10.2015