powershell - 我的测试代码和功能代码是否需要位于同一目录中才能使 Pester Code Coverage 正常工作?

标签 powershell unit-testing code-coverage pester

我的测试代码和功能代码位于同一目录中,我得到的代码覆盖率结果运行良好。

然而,在将代码拆分到单独的目录 SrcTests 之后,我现在看到以下关于路径的错误:

Resolve-CoverageInfo:无法解析覆盖路径

如何确保将数据写入我的代码覆盖率文件? 我运行 Pester 的方式是通过设置配置然后使用 Invoke-Pester 命令。参见下面的示例:

$files = Get-ChildItem .\Tests -File -Recurse -Include *.*

$config = [PesterConfiguration]::Default
$config.CodeCoverage.Enabled = $true
$config.CodeCoverage.Path = $files
$config.CodeCoverage.OutputFormat = "NUnitXml"
$config.CodeCoverage.OutputPath = "$result_folder/test-coverage.xml"
$config.TestResult.Enabled = $true
$config.TestResult.OutputPath = "$result_folder/test-results.xml"
$config.Filter.Tag = $TAG

Invoke-Pester -Configuration $config 

当我检查是否生成了 test-coverage.xml 文件时,它是空的。

最佳答案

如果 srctest 文件位于不同的目录中,则可以应用代码覆盖。

上述代码的问题在于语句 $config = [PesterConfiguration]::Default 运行所有具有 .tests 扩展名的文件 - $files 变量执行不指定要运行的文件。它指定要查看哪些文件以获得代码覆盖率结果。由于混淆了哪些文件正在运行以及 src 文件所在的位置,因此出现了这个问题。应修改此行以包含实际的 src 文件(代码覆盖工具正在分析实际函数),例如第一行将不起作用,因为代码覆盖工具正在分析测试文件,我们必须使用第二行才能正确实现,它分析 src 文件:

$files = Get-ChildItem .\Tests -File -Recurse -Include *.*

$files = Get-ChildItem .\Src -File -Recurse -Include *.*

关于powershell - 我的测试代码和功能代码是否需要位于同一目录中才能使 Pester Code Coverage 正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66653942/

相关文章:

linux - 从 Linux 远程开发 Visual C++ 应用程序

javascript - 类型错误 : undefined is not an object when unit testing with jasmine

unit-testing - 当测试在另一个包中时获取覆盖率统计信息

xml - Powershell - XPath - SUM() 和 Count() 子节点 - 仅限 XPath 表达式

powershell - 我可以在不安装模块的情况下运行 powershell 命令吗?

c# - 最小起订量测试无效方法

visual-studio - 代码覆盖率结果定期给出: Empty results generated

node.js - 如何设置不同测试级别的测试代码覆盖率?

Powershell:在 Format-Table 格式中为 Select-Object 中的列值右对齐

c# - 关闭 MSSQL 服务器中的数据库连接