我想在Powershell中编写一个NUnit测试。
在C#中考虑以下NUnit测试:
[TestCase(0)]
[TestCase(1)]
public void YabaDabaDoo(int x)
{
Assert.IsTrue(x > -1);
}
我希望能够在Powershell中表达相同的意图。显然,魔鬼是详细的,但是当需要用某种脚本语言编写测试时,有一些有效的场景。
现在,也许NUnit不是正确的选择,在这种情况下是什么?最好与NUnit相提并论。
答案 0 :(得分:3)
我想在Powershell中编写一个NUnit测试。
没有。不同的技术。
Powershell有Pester来测试Powershell脚本,而NUnit用于测试托管代码。
Pester功能包括测试运行器,断言,模拟等。
在wiki guide了解有关Pester的更多信息,以获取更多详情。
Powershell脚本可用于运行NUnit测试运行器和扩展测试。
例如
$ProjectDir = "."
$PackagesDir = "$ProjectDir\packages"
$OutDir = "$ProjectDir\bin\Debug"
# Install NUnit Test Runner
$nuget = "$ProjectDir\.nuget\nuget.exe"
& $nuget install NUnit.Runners -Version 2.6.2 -o $PackagesDir
# Set nunit path test runner
$nunit = "$ProjectDir\packages\NUnit.Runners.2.6.2\tools\nunit-console.exe"
#Find tests in OutDir
$tests = (Get-ChildItem $OutDir -Recurse -Include *Tests.dll)
# Run tests
& $nunit /noshadow /framework:"net-4.0" /xml:"$OutDir\Tests.nunit.xml" $tests
答案 1 :(得分:2)
NUnit就像其他人提到的托管代码一样。我建议使用Pester - 模块进行单元测试PowerShell代码。它可以在GitHub上使用,也可以在Windows 10中默认使用。例如:
Describe "YabaDabaDoo" {
$cases = @{x=-1},@{x=0},@{x=1}
It "<x> should be greater than -1" -TestCases $cases {
param ([int]$x)
$x | Should -BeGreaterThan -ExpectedValue -1
}
}
输出:
Describing YabaDabaDoo
[-] -1 should be greater than -1 113ms
Expected '-1' to be greater than the actual value, but got -1.
6: $x | Should -BeGreaterThan -ExpectedValue -1
[+] 0 should be greater than -1 30ms
[+] 1 should be greater than -1 15ms