确定是否NUnit的测试是在PowerShell中

问题描述:

运行完毕后,我似乎无法找到一个回调或一个很好的方式,以确定是否NUnit的测试完成在PowerShell脚本中运行。我已经提出了下面的解决方案,但它并不稳固。任何人都有更好的想法,我将如何去做这件事? 或者,NUnit中可能有一些我不知道的黑魔法?

在此先感谢!确定是否NUnit的测试是在PowerShell中

#SLN1: Could check TestResults.xml file length and loop until we're sure tests have ran 
#- Then Send command to write to file in S3 Bucket. Then have server script check for a change to that bucket. 


$NUNIT_EXE = "C:\Program Files (x86)\NUnit\NUnit.ConsoleRunner.3.7.0\tools\nunit3-console.exe\" 
$TESTING_DLL = "C:\CITestFramework\bin\Debug\CITESTS.dll" 
#NUnit3 places test results where tests are ran from, so go local 
$TESTING_RESULT_FILE = "TestResult.xml" 


Write-Host "Removing old test results." 
If (Test-Path $TESTING_RESULT_FILE){ 
    Remove-Item $TESTING_RESULT_FILE 
} 


Write-Host "Starting Tests..." 
$PROCESS = Start-Process $NUNIT_EXE $TESTING_DLL 

$count = 0 
$prev_size = 0 
$wait = 5 
Do{ 


    If (Test-Path $TESTING_RESULT_FILE){ 
     $file = Get-Item $TESTING_RESULT_FILE 
     Write-Host "Size:",$file.Length 
     Write-Host "Prev Size:", $prev_size 
     if($file.Length -gt $prev_size){ 
      $prev_size = $file.Length 
      $wait = 5 
      $count = 0 
     } else { 
      if($file.Length -eq $prev_size){ 
       $count += 1 
       $wait = 15 
      } 
     } 
    }Else{ 
     Write-Host "File Does Not Exist Yet..." 
    } 
    Start-Sleep -s $wait 


}Until($count -eq 7) 
Write-Host "Tests completed." 

#//Write to S3 bucket 
+0

**添加-Wait到启动过程不起作用。 –

+0

'&$ NUNIT_EXE $ TESTING_DLL; if($ LastExitCode -eq 0){...}'? –

啊......发现我的答案在这里:
Obtaining ExitCode using Start-Process and WaitForExit instead of -Wait

需要等待过程,并检查退出代码。这很好。