আপনি যদি নিজের ইউনিট পরীক্ষার প্রকল্পগুলি হার্ডকোড করতে না চান, তবে আপনার ইউনিট পরীক্ষা প্রকল্পের সমস্ত গ্রাহককে স্ক্রিপ্ট লিখতে ভাল। আমরা পাওয়ারশেল দিয়ে এটি করি এবং আমাদের ইউনিট টেস্টিং প্রকল্পগুলির নামকরণের জন্য একটি নির্দিষ্ট সম্মেলন অনুসরণ করি। এখানে পাওয়ার ইউনিট ফাইলগুলির সামগ্রী যা আমাদের ইউনিট পরীক্ষা চালায়:
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
স্ক্রিপ্টটি যথেষ্ট শক্তিশালী যে আমরা আমাদের সমস্ত বিল্ডিং কাজের জন্য পুনরায় ব্যবহার করছি। আপনি যদি নুনিট কনসোলের পুরো পথটি পছন্দ না করেন তবে আপনি সর্বদা সেই অবস্থানটি আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে রাখতে পারেন।
তারপরে আমরা আমাদের বিল্ড সার্ভারে রানউনিটটিস্ট.এসপি 1 ফাইলটি রেখেছি এবং এই ব্যাচ কমান্ডটি ব্যবহার করব:
powershell.exe -file "{full-path-to-script-direcory}\RunUnitTests.ps1"