Nếu bạn không muốn mã hóa các dự án kiểm thử đơn vị của mình, tốt hơn hết bạn nên viết một tập lệnh để lấy tất cả dll dự án Kiểm thử đơn vị của mình. Chúng tôi làm điều đó với Powershell và tuân theo một quy ước cụ thể để đặt tên cho các Dự án kiểm tra đơn vị của chúng tôi. Đây là nội dung của tệp powershell chạy các bài kiểm tra đơn vị của chúng tôi:
param(
[string] $sourceDirectory = $env:WORKSPACE
, $fileFilters = @("*.UnitTests.dll", "*_UnitTests.dll", "*UnitTests.dll")
, [string]$filterText = "*\bin\Debug*"
)
#script that executes all unit tests available.
$nUnitLog = Join-Path $sourceDirectory "UnitTestResults.txt"
$nUnitErrorLog = Join-Path $sourceDirectory "UnitTestErrors.txt"
Write-Host "Source: $sourceDirectory"
Write-Host "NUnit Results: $nUnitLog"
Write-Host "NUnit Error Log: $nUnitErrorLog"
Write-Host "File Filters: $fileFilters"
Write-Host "Filter Text: $filterText"
$cFiles = ""
$nUnitExecutable = "C:\Program Files (x86)\NUnit 2.6.3\bin\nunit-console-x86.exe"
# look through all subdirectories of the source folder and get any unit test assemblies. To avoid duplicates, only use the assemblies in the Debug folder
[array]$files = get-childitem $sourceDirectory -include $fileFilters -recurse | select -expand FullName | where {$_ -like $filterText}
foreach ($file in $files)
{
$cFiles = $cFiles + $file + " "
}
# set all arguments and execute the unit console
$argumentList = @("$cFiles", "/framework:net-4.5", "/xml=UnitTestResults.xml")
$unitTestProcess = start-process -filepath $nUnitExecutable -argumentlist $argumentList -wait -nonewwindow -passthru -RedirectStandardOutput $nUnitLog -RedirectStandardError $nUnitErrorLog
if ($unitTestProcess.ExitCode -ne 0)
{
"Unit Test Process Exit Code: " + $unitTestProcess.ExitCode
"See $nUnitLog for more information or $nUnitErrorLog for any possible errors."
"Errors from NUnit Log File ($nUnitLog):"
Get-Content $nUnitLog | Write-Host
}
$exitCode = $unitTestProcess.ExitCode
exit $exitCode
Tập lệnh đủ mạnh để chúng tôi sử dụng lại cho tất cả các công việc xây dựng của mình. Nếu bạn không thích đường dẫn đầy đủ đến bảng điều khiển NUnit, bạn luôn có thể đặt vị trí đó trong biến môi trường PATH của mình.
Sau đó, chúng tôi đặt tệp RunUnitTests.ps1 trên máy chủ xây dựng của chúng tôi và sử dụng lệnh lô này:
powershell.exe -file "{full-path-to-script-direcory}\RunUnitTests.ps1"