【发布时间】:2022-08-05 21:52:08
【问题描述】:
我是测试新手,我正在尝试在 Azure Pipelines 中为 .NET 运行我的单元测试和覆盖率,并将其发送到 SonarCloud。 当我使用 VSTest 运行单元测试时,我得到了 TRX 文件和 .coverage 文件。我正在使用 ReportGenerator 将 .coverage 文件转换为 XML 并将 TRX 和覆盖 XML 文件导入 SonarCloud,但在导入 TRX 文件时我在日志中收到错误消息。
这是我设置测试的管道的一部分:
- task: SonarCloudPrepare@1
inputs:
SonarCloud: \'SonarCloud\'
organization: \'org\'
scannerMode: \'MSBuild\'
projectKey: \'org_git_dotnet\'
projectName: \'org_git / git / dotnet\'
projectVersion: \'$(MajMinPat.Version)\'
extraProperties: |
sonar.coverageReportPaths=$(Agent.BuildDirectory)\\git\\testsResult\\unitTest\\SonarQube.xml
sonar.cs.nunit.reportsPaths=$(Agent.BuildDirectory)\\git\\testsResult\\unitTest\\testResults.trx
- task: VisualStudioTestPlatformInstaller@1
inputs:
packageFeedSelector: \'nugetOrg\'
versionSelector: \'latestStable\'
- task: VSTest@2
displayName: Unit Tests
inputs:
testSelector: \'testAssemblies\'
testAssemblyVer2: \'*(*.Test)*(*.Integration).dll\'
searchFolder: \'$(Agent.BuildDirectory)\\git\\test-bin\'
resultsFolder: \'$(Agent.BuildDirectory)\\git\\testsResult\\unitTest\'
vsTestVersion: \'toolsInstaller\'
testFiltercriteria: \'TestCategory!=Integration\'
codeCoverageEnabled: true
otherConsoleOptions: \'/Logger:\"trx;LogFileName=testResults.trx\" /EnableCodeCoverage -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.CoverageFileName=\"my.coverage\"\'
- task: PowerShell@2
displayName: Search for coverage file
inputs:
targetType: \'inline\'
script: \'Get-ChildItem -Path \"$(Agent.BuildDirectory)\\git\\testsResult\\unitTest\\*\" -Include *.coverage -Recurse | Copy-Item -Destination $(Agent.BuildDirectory)\\git\\testsResult\\unitTest\'
- task: PowerShell@2
displayName: Transform coverage file into xml
inputs:
targetType: \'inline\'
script: \'C:\\Users\\tfs_build_agent\\.nuget\\packages\\microsoft.codecoverage\\17.2.0\\build\\netstandard1.0\\CodeCoverage\\CodeCoverage.exe analyze /output:$(Agent.BuildDirectory)\\git\\testsResult\\unitTest\\DynamicCodeCoverage.coveragexml $(Agent.BuildDirectory)\\git\\testsResult\\unitTest\\my.coverage\'
- task: DotNetCoreCLI@2
displayName: Install Report Generator
inputs:
command: \'custom\'
custom: \'tool\'
arguments: \'install dotnet-reportgenerator-globaltool --version 4.8.13\'
- task: DotNetCoreCLI@2
displayName: Run Report Generator
inputs:
command: \'custom\'
custom: \'reportgenerator\'
arguments: \'-reports:$(Agent.BuildDirectory)\\git\\testsResult\\unitTest\\DynamicCodeCoverage.coveragexml -targetdir:$(Agent.BuildDirectory)\\git\\testsResult\\unitTest -reporttypes:SonarQube\'
- task: SonarCloudAnalyze@1
我收到的错误:
Could not import unit test report \'C:\\agent\\_work\\162\\git\\testsResult\\unitTest\\testResults.trx\': Unrecognized root element <TestRun> in C:\\agent\\_work\\162\\git\\testsResult\\unitTest\\testResults.trx at line 2
我不确定我在这里做错了什么!
标签: c# .net testing sonarqube sonarcloud