PowerShell测试:模块或单个文件

vdzxcuhz  于 2023-01-30  发布在  Shell
关注(0)|答案(1)|浏览(135)
    • 背景**

我有一个PowerShell模块,我在这里开始编写测试。每个函数都存储在自己的同名文件中(例如,function MyFunction存储在名为MyFunction.ps1的文件中)。类似地,测试存储在名为MyFunction.Tests.ps1的文件中。结构如下所示。

Source\
    Public\
        MyFunction.ps1
    Private\
Tests\
    MyFunction.Tests.ps1

为了加快模块的加载速度,在构建期间,所有函数都被复制到.psm1文件中。

    • 问题**

测试(包含代码覆盖率、集成、回归等的单元测试)应该针对单个.ps1文件中的函数运行还是针对整个.psm1文件运行?如果您能提供关于每种方法的优缺点的信息,我们将不胜感激。

pqwbnv8z

pqwbnv8z1#

在构建期间,所有函数都被复制到.psm1文件中。
一般来说,您应该始终测试 * 在运行时实际使用 * 的代码,这意味着您应该针对.psm1文件进行测试。
这可以防止隐藏以下潜在问题,例如:

  • 直接放置在作用域中的代码和通过点源从外部脚本加载的代码之间的细微行为差异。
  • 类似地,如果要 * 隔离 * 测试.ps1文件(如果可行的话),那么当将各个文件放在单个.psm1文件中时,可能会错过各个文件中的代码之间潜在的(不必要的)交互;此外,.psm1文件的行为与.ps1文件不同。
  • 创建单个.psm1文件的构建脚本中存在缺陷。

相关问题