如何在PowerShell中进行TDD和单元测试?

Pre*_*ous 66 tdd powershell unit-testing pester

随着MS对所有新服务器产品进行攻击,我开始(不情愿地)认为我需要认真对待它."认真对待"的部分内容是TDD.你有没有找到好的单元测试电源shell脚本的方法?

我找到了Geek Noise先生的嘲笑样本- 但我真的很喜欢像RhinoMocks这样的东西.Brian Hartsock有一个从MS Test对powershell字符串运行测试的示例.有点hacky,但它似乎工作.

我想要的是Powershell TDD体验,它与"真实"语言一样干净.


更新澄清:

前两个答案试图引导我远离测试Powershell.意见很有趣.我不想知道在PowerShell中测试是否是个好主意.这是一个主观问题,应该在不同的论坛上提出.我想要一个单元测试PowerShell的解决方案.如果您认为这是一个坏主意(可能是这样),请将其视为一个有趣的学术问题.

  • 是的,脚本语言将不同的系统粘合在一起.但是,正如已经指出的那样,用动态语言模拟和破坏接缝也很容易.
  • 我不是在问"调试".调试是一个非常有用的主题.我会让别人问它.
  • 也许PS脚本应该很简单.该语言支持模块化,复杂的过程将不可避免地在PS中实现(即使是一个坏主意).
  • 这个问题的答案不是"你不能".我可以看到(来自链接的博客 - 有点老),有些人在这个问题上取得了进展.

重新声明:如何以xUnit的方式实现Powershell逻辑的自动测试? 集成测试很有趣,单元测试打破了最有趣的依赖关系.

Mar*_*nek 43

Scott Muc已经为PowerShell启动了一个名为Pester的轻量级BDD框架项目:

https://github.com/pester/Pester

  • 比PsUnit更好的设计.它不需要与配置文件或安装程序混淆.我已经把它给了它并将在本周开始使用它. (2认同)
  • 以下是Scott关于pester的博客文章http://scottmuc.com/blog/development/pester-bdd-for-the-system-administrator/ (2认同)

Cel*_*ish 11

PsUnit现在用框架更新.几个月前我遇到了和你一样的问题,我觉得PsUnit对于我必须编写的脚本数量而言要大而复杂,所以我为PS编写了自己的单元测试框架.PS具有与其他脚本语言(例如python)相同的类型,即你可以随时在任何地方覆盖函数,即使在测试方法中具有范围,这对于伪造(也就是模拟)非常有用.也就是说,如果您要测试的函数或对象依赖于其他函数,则可以在测试方法中声明它们以创建本地虚假实现.

那么你选择使用哪个测试框架我会说PS很容易TDD.这至少是我的经验.