如何使用Pester获取所有分支的代码覆盖率?

时间:2014-07-09 22:12:32

标签: code-coverage chocolatey pester

已编写多个test cases以使用Pester测试新的Chocolatey函数。如何检查所有分支是否已被覆盖?

2 个答案:

答案 0 :(得分:3)

当前版本的Pester(3.0)确实支持代码覆盖率。

只需使用

Invoke-Pester -CodeCoverage *.ps1

获得完整的代码覆盖率(coverage%)以及测试期间未执行的所有代码行(分支)的摘要:

Tests completed in 10.11s
Passed: 66 Failed: 0 Skipped: 0 Pending: 0

Code coverage report:
Covered 99,20 % of 501 analyzed commands in 22 files.

Missed commands:

File                  Function          Line Command
----                  --------          ---- -------
Set-ProgressColor.ps1 Set-ProgressColor   19 Write-Verbose "Progress colors are only supported on the PowerShell com...

答案 1 :(得分:2)

更新2:

感谢oɔɯǝɹ指出Pester现在已经发布了支持代码覆盖的Pester版本。

更新1:

从Pester 3.0版开始,现在可以使用以下方法获取代码覆盖率信息:

Invoke-Pester -CodeCoverage <path to file>

这在项目维基页面中有记录:

https://github.com/pester/Pester/wiki/Code-Coverage

注意:要使用此功能,您需要PowerShell 3.0版

原始答案:

据我所知,Pester目前不支持代码覆盖率分析,但它正在进行中。

此功能存在未解决的问题:

https://github.com/pester/Pester/issues/53

你可以看到它在这里工作:

http://davewyatt.wordpress.com/2014/06/29/code-coverage-analysis-for-pester-feedback-request/

这里有一个截图:

https://twitter.com/nohwnd/status/485093995929157632

所以基本上,紧紧抓住,希望很快会有所作为。

就实际的Chocolatey代码库而言,使用了相当好的约定,即对于每个* .ps1文件,“should”应该是相应的“.Tests.ps1文件。如果第二个文件没有”存在,那么该功能没有单元测试。