PowerShell Pester - Code Coverage
2403 ワード
今日引き続きPesterを勉強して、invoke-pesterは1つのとてもnbのオプションがcodeCoverageと言って、テストする必要があるスクリプト、function甚だしきに至ってはある断片の範囲を指定することができて、それから彼はあなたにこの範囲内の機能がすべてテストしたかどうかを教えます.
例を見てみると、豆は前のスクリプトにswitchtestのfunctionを直接追加し、ifの機能をテストしました.
Test.ps1
Test.tests.ps1
実行してみて、最後に彼は私が指定したスクリプトの中で、80%のテストしか完成していないと私に言った.if文のもう一つの分岐は私がテストしていないからだ.
スクリプトの範囲を変更して、16~18行の内容だけをテストします.最後のレポートは、範囲を選択する機能が100%テストされたことを示しています.
例を見てみると、豆は前のスクリプトにswitchtestのfunctionを直接追加し、ifの機能をテストしました.
Test.ps1
function add {
param(
[int]$a,
[int]$b
)
$sum=$a+$b
$sum
}
function switchtest{
param(
[switch]$switch
)
if($switch){
return "Switch is On"
}
else{
return "Switch is Off"
}
}
Test.tests.ps1
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
. "$here\$sut"
Describe "Test" {
Context "Should be test"{
It "Add 1 and 2 is equal to 3" {
add 1 2 | Should Be 3
}
It "Add -1 and 2 is not equal to 0" {
add -1 2 | Should not Be 0
}
It "Test Switch option"{
switchtest -switch | Should be "Switch is on"
}
}
Context "Should BeExactly test"{
It "HostName" {
hostname | Should beexactly "yli-ise"
}
}
Context "Should BeGreaterThan test"{
It "PsVersion is above 3" {
$PSVersionTable.PSVersion.Major | Should beGreaterThan 3
}
}
Context "Should beOfType test"{
It "Get-ADUser type"{
Get-aduser yli | Should beoftype Microsoft.ActiveDirectory.Management.ADUser
}
}
Context "Should Exist test"{
It "C:\temp exist"{
"c:\temp" | should exist
}
}
Context "Should match test"{
It "Find Email"{
"jksjsjsjssdjs [email protected] hsosofs" | should match "[a-z0-9!#\$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#\$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
}
}
Context "Should Throw test" {
It "Get a non-exist Process"{
{Get-Process -Name "!@#$%&" -ErrorAction Stop} | Should Throw
}
}
Context "Should BeNullorEmpty test"{
It "Get something from test folder"{
get-childitem C:\temp | should not benullorempty
}
}
}
実行してみて、最後に彼は私が指定したスクリプトの中で、80%のテストしか完成していないと私に言った.if文のもう一つの分岐は私がテストしていないからだ.
スクリプトの範囲を変更して、16~18行の内容だけをテストします.最後のレポートは、範囲を選択する機能が100%テストされたことを示しています.