Вот почему исходное выражение не сработало.
Из man bash :
Расширение скобки выполняется перед любыми другими расширениями , и в результате сохраняются любые символы, специальные для других расширений. Это строго текстовое. Bash не применяет синтаксическую интерпретацию контекста расширения или текста между фигурными скобками.
blockquote>Итак, расширение скобки - это что-то, сделанное раньше, как чисто текстовое макро-операции, до расширения параметра .
Корпуса представляют собой высоко оптимизированные гибриды между макропроцессорами и более формальными языками программирования. Чтобы оптимизировать типичные варианты использования, язык становится более сложным, и некоторые ограничения принимаются.
Рекомендация
blockquote>Я бы предложил придерживаться Posix1 функции. Это означает использование
for i in <list>; do
, если список уже известен, в противном случае используйтеwhile
илиseq
, как в:#!/bin/sh limit=4 i=1; while [ $i -le $limit ]; do echo $i i=$(($i + 1)) done # Or ----------------------- for i in $(seq 1 $limit); do echo $i done
1. Bash - отличная оболочка, и я использую ее в интерактивном режиме , но я не ставил bash-isms в мои скрипты. Скриптам может понадобиться более быстрая оболочка, более безопасная, более встроенная. Им может потребоваться запустить все, что установлено как / bin / sh, и тогда есть все обычные аргументы pro-standards. Помните shellshock, aka bashdoor?
FWIW: У меня была эта проблема, и оказалось, что я пытался запустить симулятор не в той ОС.
Я пытался использовать iOS8.x, а UITesting работает только в iOS9 +.
Переключите версию симулятора, и появится кнопка записи.
Он сразу вернулся, когда я переключился на правильную схему. Убедитесь, что вы используете схему UI testing
, поскольку тестовый регистратор пользовательского интерфейса не может работать ни на одной другой.
Вы должны импортировать класс просмотра, который хотите протестировать. Затем поместите курсор в метод теста.
Убедитесь, что в каждом файле имеется только один подкласс XCTestCase
. Вы хотите, чтобы имена файлов и классов совпадали.
По моему опыту, даже если у вас работают тесты пользовательского интерфейса, если вы добавите новый подкласс вашего рабочего подкласса XCTestCase в тот же файл, кнопка записи будет отключена (хотя все другие пользовательские интерфейсы тестирования будут продолжать работать).
Как бы глупо это не звучало, Мне пришлось выбрать другой файл на боковой панели слева и вернуться к моему файлу с контрольными примерами. После этого кнопка сразу стала активной.
Я нашел другое решение, которое я не видел здесь.
Если вы создаете подкласс XCTestCase
, измените свой класс так, чтобы он наследовал от него, сохраните файл , измените его на имя вашего подкласса. Не нужно ни чистить, ни строить.
Для моего проекта у меня есть подкласс XCTestCase
, назовем его APPMyTestCase
. Я часто нахожу, что кнопка записи неактивна, и иногда маленькие зеленые / красные кнопки рядом с каждым из методов тестирования также не позволяют запускать их по отдельности. Если я переключаю свой подкласс обратно на XCTestCase
на секунду, все снова работает.
Изменить это:
class APPLoadingPageUITests: APPMyTestCase {
// tests here
}
На это:
class APPLoadingPageUITests: XCTestCase {
// tests here
}
А потом вернуться к этому:
class APPLoadingPageUITests: APPMyTestCase {
// tests here
}
Это исправило это для меня .
Я сделал несколько вещей, чтобы включить кнопку записи:
Кроме того, убедитесь, что ваша цель сборки / запуска установлена на iPhone X 9.X.
Это немного глупо, но пропущено в некоторых статьях, которые я читал.
Убедитесь, что у вас есть цель UITesting, обычная цель тестирования не сделала этого для меня.
У меня была та же проблема, и моя установка была правильной, iOS> = 9.0, цель была добавлена.
Проблема заключалась в индексировании XCode, которое заняло некоторое время (около 1 часа), после того как индексирование было выполнено, кнопка записи становится активной.
Была такая же проблема в Xcode 8.3.
Я удалил метод tearDown
override func tearDown() {
super.tearDown()
}
, так как не нужно было его использовать. Как только я добавил его обратно, кнопка записи была включена.
Я тоже застрял на этом. Для записи вы должны быть в классе, который Xcode распознает как содержащий тесты. Добавьте файл в свою цель тестирования пользовательского интерфейса с помощью чего-то вроде:
import Foundation
import XCTest
class MyTests: XCTestCase {
func testSomething() {
}
}
Сохраните файл, очистите ваш проект и переключитесь на другой файл, а затем вернитесь к этому. Кнопка записи должна быть доступна.
Для меня проблема была в том, что была открыта панель «Редактор версий». Как только я вернулся к помощнику редактора, все заработало.
Метод тестирования должен начинаться со слова test
, чтобы Xcode распознал его и разрешил запись, когда курсор находится внутри метода.
Одним из признаков того, что XCode распознал метод, является ромб, появляющийся слева от названия метода:
Когда я создал Цель UITest, новая схема не была одновременно создана. Так, я должен был создать новую схему с тестовой целью, которую я создал. Это включило кнопку записи.