我的测试代码和功能代码位于同一目录中,我得到的代码覆盖率结果运行良好。
然而,在将代码拆分到单独的目录 Src
和 Tests
之后,我现在看到以下关于路径的错误:
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
文件时,它是空的。
最佳答案
如果 src
和 test
文件位于不同的目录中,则可以应用代码覆盖。
上述代码的问题在于语句 $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/