Короткий ответ: Вы не должны
Длинный Ответ: Вы действительно не должны, потому что это массово нарушает цели юнит-тестирования
Хотя это легко сделать echo "Input for Test 7: "; $input = fgets(STDIN);
это не то, как работает юнит-тестирование.В зависимости от вашего варианта использования может быть причиной для этого, но я не могу думать ни о чем, и поскольку решение тривиально, я использую оставшуюся часть поста, описывающую, почему вы можете этого не хотеть.
Юнит-тесты предназначены для частого запуска.Действительно очень часто.Многие люди используют настройки, которые запускают тесты каждый раз, когда вы редактируете файл.Но, по крайней мере, каждый раз перед проверкой кода в системе управления исходным кодом.Вы действительно хотите писать 1 (или 10 или 50) строк каждый раз, чтобы ваш тестовый набор работал?
Также самое большое преимущество Unittests заключается в том, что у вас есть система, которая решает один очень важный вопрос "если я вставлю здесь то же самое, что и вчера, он все равно выдаст тот же вывод / он все равно будет работать ».Поэтому я не вижу смысла каждый раз вводить что-то новое.
Если вы сделаете еще один шаг и воспользуетесь автоматизированной системой для запуска ваших тестов и отправите электронное письмо на случай, если тесты не пройдут, это нелюбой, кто предоставит информацию, чтобы вы не могли ее использовать ... и одна из главных причин использовать юнит-тестирование - именно это;)
Если вы действительно уверены в том, что делаете: извините за разглагольствование'
Редактировать (ваш ответ появился только после публикации для меня): То же самое относится и к другому динамическому вводу.Имхо ты хочешь убедиться, что результат воспроизводим.Если вам просто нужна временная переменная / имя_фолдера / ключ /, то это не большая проблема.Я бы просто использовал md5(mt_rand())
или что-то в этом роде.Тем не менее, было бы неплохо, если бы вы могли настроить свои тесты таким образом, чтобы в этом не было необходимости