我的测试代码和功能代码是否需要位于同一目录中才能使 Pester Code Coverage 正常工作?
Do my test code and function code need to be in the same directory for Pester Code Coverage to work?
我的测试代码和功能代码在同一个目录中,我得到的代码覆盖率结果运行良好。
然而,在将代码拆分到单独的目录 Src
和 Tests
之后,我现在看到以下关于路径的错误:
Resolve-CoverageInfo : Could not resolve coverage path
如何确保数据写入我的代码覆盖率文件?
我 运行 纠缠的方式是通过设置配置然后使用 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
运行s all files with the .tests extension - $files
变量没有指定哪些文件要运行.它指定要查看哪些文件以获得代码覆盖率结果。由于混淆了哪些文件是 运行 以及 src
文件所在的位置,因此出现了这个问题。应修改此行以包含实际的 src
文件(代码覆盖工具正在分析实际函数),例如第一行将不起作用,因为代码覆盖工具正在分析测试文件,我们必须使用正确实施的第二行,分析 src 文件:
$files = Get-ChildItem .\Tests -File -Recurse -Include *.*
$files = Get-ChildItem .\Src -File -Recurse -Include *.*
我的测试代码和功能代码在同一个目录中,我得到的代码覆盖率结果运行良好。
然而,在将代码拆分到单独的目录 Src
和 Tests
之后,我现在看到以下关于路径的错误:
Resolve-CoverageInfo : Could not resolve coverage path
如何确保数据写入我的代码覆盖率文件?
我 运行 纠缠的方式是通过设置配置然后使用 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
运行s all files with the .tests extension - $files
变量没有指定哪些文件要运行.它指定要查看哪些文件以获得代码覆盖率结果。由于混淆了哪些文件是 运行 以及 src
文件所在的位置,因此出现了这个问题。应修改此行以包含实际的 src
文件(代码覆盖工具正在分析实际函数),例如第一行将不起作用,因为代码覆盖工具正在分析测试文件,我们必须使用正确实施的第二行,分析 src 文件:
$files = Get-ChildItem .\Tests -File -Recurse -Include *.*
$files = Get-ChildItem .\Src -File -Recurse -Include *.*