如何将AxoCover(NUnit)与Jenkins集成



我找不到描述该主题的文章或教程。

因此,我的问题是如何将AxoCover与Jenkins集成:

  • 根据代码覆盖率百分比标记构建失败或
  • 安全
  • 已向特定用户发送包含通知的电子邮件

提前致谢

所以,总的来说,我提出了创建Powershell脚本并在jenkins作业期间执行它的解决方案:

<#
.SYNOPSIS
Runs NUnit unit tests  in given Visual Studio solution and provides code coverage result
Duplicate for CodeCoverageRunner fix for NUnit 3.
https://github.com/nunit/nunit-console/issues/117
.PARAMETER TestConfig
{
"SolutionFile": "\project.sln",
"BuildConfiguration": "Debug",
"TestResultDirectory": "\tempFolder",
"TestRunnerPath": "\nunit3-console.exe",
"CodeCoverageToolPath" : "\OpenCover.Console.exe",
"ReportGeneratorPath": "\ReportGenerator.exe",
"AssemblyFilters": "+[*]*"
}
#>

$config = ConvertFrom-Json $TestConfig
$testRunnerArgs = GetTestProjects `
-SolutionFile $config.SolutionFile `
-BuildConfiguration $config.BuildConfiguration
$workingDirectory = $config.TestResultDirectory
$testRunner = $config.TestRunnerPath
$codeCoverageTool = $config.CodeCoverageToolPath
$reportGenerator = $config.ReportGeneratorPath
$filters = $config.AssemblyFilters
$coverageResult = Join-Path $workingDirectory "codecoverage.xml"
& $codeCoverageTool -target:"""$testRunner""" `
-targetargs:"""$testRunnerArgs --inprocess $("-result","test_result.xml")""" `
-register:Administrator `
-mergebyhash `
-skipautoprops `
-output:"""$coverageResult""" `
-filter:"""$filters""" `
-returntargetcode
if($LASTEXITCODE -ne 0){
exit $LASTEXITCODE
}
$targetDir = Join-Path $workingDirectory "CodeCoverage"
$historyDir = Join-Path $workingDirectory "CoverageHistory"
& $reportGenerator `
-reports:$coverageResult `
-targetDir:"""$targetDir""" `
-historydir:"""$historyDir"""

function GetTestProjects
{  
param (
[Parameter(Mandatory=$true)]
[string]$SolutionFile,
[Parameter(Mandatory=$true)]
[string]$BuildConfiguration
)
$BaseDir = (get-item $solutionFile).Directory
$Projects = @()
Get-Content -Path $SolutionFile | % {
if ($_ -match 's*Project.+=s*.*,s*"s*(.*Tests.Unit.*proj)s*"s*,s*') { 
$currentName = $matches[1].Split("")[0]
$currentDll = $matches[1].Split("")[1].Replace(".csproj",".dll")
#Write-Host "current $currentName"                     
$Projects +=  "`"", $(Join-Path -Path $BaseDir $currentName), "bin$BuildConfiguration$currentDll"  ,"`"" -join ""
}
}
return $Projects
}

最新更新