如何将 AxoCover (NUnit) 与 Jenkins 集成

How to integrate AxoCover (NUnit) with 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
}