Как сделать TDD и поблочное тестирование в powershell?

Step 1: ctrl+shift+F8
Step 2: ctrl+A
Step 3: Click delete or Alt+delete
Step 4: done
66
задан Mark Wragg 25 April 2017 в 11:03
поделиться

3 ответа

Судя по вашему вопросу, я думаю, что вас ждет разочарование. Powershell - это всего лишь небольшой язык командной строки. Конечно, он может делать все, что может делать C #, и даже больше, но то же самое может делать язык ассемблера. Конечно, это тоже объектно-ориентированный подход и он связан с библиотеками .NET, но так же и C #, который является гораздо более чистым языком.

Если решение длиннее, чем один лайнер, или вы думаете, что вам нужно выполнить TDD, тогда вы не хотите использовать Powershell. Это загадочный язык, полный сюрпризов, которого следует избегать в случае чего-либо сложного.

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

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

-5
ответ дан 24 November 2019 в 15:08
поделиться

Думаю, вы спрашиваете о «стратегиях тестирования», а не конкретно о TDD, поэтому я отвечу на оба вопроса.

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

Выполнение ваших скриптов в идеальной промежуточной среде будет бесконечно более ценным, чем «конкретизация вашего дизайна» с помощью TDD или «проверка намерения вашего кода» с помощью постфактуальных модульных тестов.

Небольшие примечания, которые могут помочь:

  • Переключатель -whatif существует во встроенных командлетах. Также я только что узнал, что вы тоже можете это сделать: -whatif: $ someBool - вы будете знать, когда он вам понадобится.
  • ISE, входящая в V2, имеет отладчик. Милый.
  • Вы всегда можете создать собственный командлет на C # и делать там все, что захотите.
2
ответ дан 24 November 2019 в 15:08
поделиться

PsUnit теперь обновлен с помощью фреймворка. У меня была та же проблема, что и у вас, несколько месяцев назад, и я почувствовал, что PsUnit был слишком большим и сложным для количества скриптов, которые мне приходилось писать, поэтому я написал свою собственную структуру модульного тестирования для PS. PS имеют такую ​​же характеристику, как и другие языки сценариев, например, python, т.е. вы можете переопределять функции в любом месте в любое время, даже с областью действия в методах тестирования, что отлично подходит для подделки (также известного как насмешка). То есть, если у вас есть функция или объект, который вы хотите протестировать, который зависит от других функций, вы можете объявить их в своем методе тестирования, чтобы создать локальную поддельную реализацию.

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

11
ответ дан 24 November 2019 в 15:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: