Взять в консоли ввод для PHPUnit - PullRequest
2 голосов
/ 11 августа 2010

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

Как я могу это сделать?

1 Ответ

4 голосов
/ 11 августа 2010

Короткий ответ: Вы не должны

Длинный Ответ: Вы действительно не должны, потому что это массово нарушает цели юнит-тестирования

Хотя это легко сделать echo "Input for Test 7: "; $input = fgets(STDIN); это не то, как работает юнит-тестирование.В зависимости от вашего варианта использования может быть причиной для этого, но я не могу думать ни о чем, и поскольку решение тривиально, я использую оставшуюся часть поста, описывающую, почему вы можете этого не хотеть.

Юнит-тесты предназначены для частого запуска.Действительно очень часто.Многие люди используют настройки, которые запускают тесты каждый раз, когда вы редактируете файл.Но, по крайней мере, каждый раз перед проверкой кода в системе управления исходным кодом.Вы действительно хотите писать 1 (или 10 или 50) строк каждый раз, чтобы ваш тестовый набор работал?

Также самое большое преимущество Unittests заключается в том, что у вас есть система, которая решает один очень важный вопрос "если я вставлю здесь то же самое, что и вчера, он все равно выдаст тот же вывод / он все равно будет работать ».Поэтому я не вижу смысла каждый раз вводить что-то новое.

Если вы сделаете еще один шаг и воспользуетесь автоматизированной системой для запуска ваших тестов и отправите электронное письмо на случай, если тесты не пройдут, это нелюбой, кто предоставит информацию, чтобы вы не могли ее использовать ... и одна из главных причин использовать юнит-тестирование - именно это;)


Если вы действительно уверены в том, что делаете: извините за разглагольствование'


Редактировать (ваш ответ появился только после публикации для меня): То же самое относится и к другому динамическому вводу.Имхо ты хочешь убедиться, что результат воспроизводим.Если вам просто нужна временная переменная / имя_фолдера / ключ /, то это не большая проблема.Я бы просто использовал md5(mt_rand()) или что-то в этом роде.Тем не менее, было бы неплохо, если бы вы могли настроить свои тесты таким образом, чтобы в этом не было необходимости

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