1

次のコードを使用して、TFS 2015 のビルド プレビューで powershell スクリプト タスクからカバレッジ レポートを生成しています。ビルド サーバーで実行すると、レポートが正しく生成されますが、ビルドの一部として実行すると、pdb ファイルがないというエラーが表示されます。

結果はありません。これにはいくつかの理由が考えられます。最も一般的な理由は次のとおりです。

1) フィルターに一致するアセンブリの PDB が見つからない 出力ファイルを確認し、フィルターについては使用ガイド (Usage.rtf) を参照してください。

2) プロファイラーが正しく登録されていない可能性があります。使用ガイドと -register スイッチを参照してください。

少しグーグルを行った後、 /noshadow で十分であることを発見しましたが、 nunit のパラメーターが無視されているようです。/nologo コマンドは著作権情報を印刷から除外する必要があるため、無視されていると思いますが、コンソール出力では、表示されている情報を引き続き確認できます。

また、作業ディレクトリとしてビルド出力ディレクトリを使用すると、これも修正されるはずですが、Set-Location を使用してもビルド中に問題は解決しませんでした。

これは私が現在実行しているスクリプトです:

Param
(
    [string] $SourceDir = $env:BUILD_SOURCESDIRECTORY,
    [string] $UnitTestDir = "",
    [string] $UnitTestDll ="",
    [string] $Filter = "",
    [string] $ExcludeByAttribute = "System.CodeDom.Compiler.GeneratedCodeAttribute",
    [string] $nUnitOutputPath = "Output.txt",
    [string] $nUnitErrorOutputPath = "Error.text",
    [string] $XmlOutputPath = "_CodeCoverageResult.xml",
    [string] $ReportOutputPath = "_CodeCoverageReport"
)

$openCoverPath = "E:\BuildTools\OpenCover.4.5.3723\OpenCover.Console.exe"
$nUnitPath = "E:\BuildTools\NUnit.Runners.2.6.4\tools\nunit-console.exe"
$reportGeneratorPath = "E:\BuildTools\ReportGenerator.2.1.1.0\ReportGenerator.exe"

$nUnitArgs = "$SourceDir\$UnitTestDir\$UnitTestDll /noshadow /nologo"

Write-Host "[Debug] Setting location to $SourceDir\$UnitTestDir"
Set-Location $SourceDir\$UnitTestDir

if (!(Test-Path $SourceDir\CodeCoverage)) {
    New-Item $SourceDir\CodeCoverage -type directory
}
Write-Host "[Debug] Running unit tests from $SourceDir\$UnitTestDir\$UnitTestDll" 
Write-Host "[Debug] Command: $openCoverPath -target:$nUnitPath -targetargs:""$nUnitArgs"" -filter:$Filter -excludebyattribute:$ExcludeByAttribute -register:user -output:""$SourceDir\CodeCoverage\$XmlOutputPath"""

& $openCoverPath -target:$nUnitPath -targetargs:"$nUnitArgs" -filter:$Filter -excludebyattribute:$ExcludeByAttribute -register:user -output:"$SourceDir\CodeCoverage\$XmlOutputPath"

Write-Host "[Debug] Generating report"
Write-Host "[Debug] Command: $reportGeneratorPath ""-reports:$SourceDir\CodeCoverage\$XmlOutputPath"" ""-targetdir:$SourceDir\CodeCoverage\$ReportOutputPath"""

& $reportGeneratorPath -reports:$SourceDir\CodeCoverage\$XmlOutputPath -targetdir:$SourceDir\CodeCoverage\$ReportOutputPath

Write-Host "[Debug] Finished running tests and generating report"
4

1 に答える 1