1

Visual Studio 2010 プロジェクトをビルドするときに、NUnit で単体テストを実行し、一部のテストが失敗した場合にのみテスト結果を表示したいと考えています。

以下のようなバッチ ファイルを呼び出すために、Visual Studio でビルド後のイベントをセットアップしました。

$(ProjectDir)RunUnitTest.bat "$(SolutionDir)packages\NUnit.Runners.2.6.0.12051\tools\nunit-console.exe" "$(TargetPath)"

次に、テスト プロジェクト dllRunUnitTest.batを呼び出して渡します。nunit-console.exe

@echo off    
REM runner is the full path to nunit-console.exe
set runner=%1    
REM target is the full path to the dll containing unit tests
set target=%2    
"%runner%" "%target%"    
if errorlevel 1 goto failed
if errorlevel 0 goto passed    
:failed
echo some tests failed
goto end    
:passed
echo all tests passed
goto end    
:end
echo on

その後、NUnit はTestResult.xmlテスト結果を含むものを生成するので、ユーザー フレンドリーな方法で表示するにはどうすればよいでしょうか? Visual Studio 内に表示するのがベストですが、他のオプションも開いています。

4

2 に答える 2

0

XSLT を使用して変換を実行し、TestResult.xml からの結果を表示することを検討してください。

于 2012-07-03T04:42:04.233 に答える
0

最終的には、 nunit-summaryを使用してすべてのパス サマリー HTML レポートを生成し、nunit-resultsを使用して失敗したテスト レポートを html で作成しました。

このアプローチは静かで簡単にセットアップできます。

まず、ランチパッドから nunit-summary と nunit-results をダウンロードし、テスト プロジェクトの下の TestRunner フォルダーに配置します。

次に、ビルド後のイベントを追加して、バッチ ファイルを呼び出します。

最後に、テスト プロジェクトの下の TestRunner フォルダーにバッチ ファイルを追加します。少なくとも次のファイルが含まれている必要があります。

  • nunit-results.exe
  • nunit-results.tests.dll
  • nunit-results.tests.pdb
  • nunit-summary.exe
  • `nunit-core.dll
  • nunit.util.dll
  • RunUnitTests.bat

単体テストを含むプロジェクトのビルド後のイベント:

"$(ProjectDir)TestRunner\RunUnitTests.bat" "$(SolutionDir)packages\NUnit.Runners.2.6.0.12051\tools\nunit-console.exe" "$(TargetPath)" "$(TargetDir)"

のスクリプトRunUnitTest.bat

REM     This batch file does the followings:
REM     1. runs unit test with nunit-console.exe and produces a TestResult.xml
REM     2. if one or more tests failes, it calls unit-results.exe to convert TestResult.xml to 
REM     Usage: RunUnitTests.bat "path-to-nunit.exe" "path-to-test.dll" "path-to-output-folder"

@echo off

REM get input arguments
set runner=%1
set target=%2
set output=%3

REM remove double quotes
set runner=%runner:"=%
set target=%target:"=%
set output=%output:"=%

REM prepare and clean up TestResult folder
if not exist "%output%TestResults\nul" md "%output%TestResults"
del "%output%\TestResults\*.*" /q

"%runner%" "%target%"

if errorlevel 1 goto failed
if errorlevel 0 goto passed

:failed
echo some tests failed
"%~dp0nunit-results.exe" "%output%TestResult.xml"
"%output%TestResults\index.html"
exit 1

:passed
echo all tests passed
"%~dp0nunit-summary.exe" "%output%TestResult.xml" -out=TestResults\TestSummary.html
"%output%TestResults\TestSummary.html"
exit 0
于 2012-07-03T22:25:27.260 に答える