PublishTestResults@2 - Pubblicare i risultati dei test v2 attività
Pubblicare i risultati dei test in Azure Pipelines.
Pubblicare i risultati dei test in Azure Pipelines/TFS.
Sintassi
# Publish Test Results v2
# Publish test results to Azure Pipelines.
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit' # 'JUnit' | 'NUnit' | 'VSTest' | 'XUnit' | 'CTest'. Alias: testRunner. Required. Test result format. Default: JUnit.
testResultsFiles: '**/TEST-*.xml' # string. Required. Test results files. Default: **/TEST-*.xml.
#searchFolder: '$(System.DefaultWorkingDirectory)' # string. Search folder. Default: $(System.DefaultWorkingDirectory).
#mergeTestResults: false # boolean. Merge test results. Default: false.
#failTaskOnFailedTests: false # boolean. Fail if there are test failures. Default: false.
#failTaskOnFailureToPublishResults: false # boolean. Fail if there is failure in publishing test results. Default: false.
#failTaskOnMissingResultsFile: false # boolean. Fail if no result files are found. Default: false.
#testRunTitle: # string. Test run title.
# Advanced
#buildPlatform: # string. Alias: platform. Build Platform.
#buildConfiguration: # string. Alias: configuration. Build Configuration.
#publishRunAttachments: true # boolean. Upload test results files. Default: true.
# Publish Test Results v2
# Publish test results to Azure Pipelines.
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit' # 'JUnit' | 'NUnit' | 'VSTest' | 'XUnit' | 'CTest'. Alias: testRunner. Required. Test result format. Default: JUnit.
testResultsFiles: '**/TEST-*.xml' # string. Required. Test results files. Default: **/TEST-*.xml.
#searchFolder: '$(System.DefaultWorkingDirectory)' # string. Search folder. Default: $(System.DefaultWorkingDirectory).
#mergeTestResults: false # boolean. Merge test results. Default: false.
#failTaskOnFailedTests: false # boolean. Fail if there are test failures. Default: false.
#testRunTitle: # string. Test run title.
# Advanced
#buildPlatform: # string. Alias: platform. Build Platform.
#buildConfiguration: # string. Alias: configuration. Build Configuration.
#publishRunAttachments: true # boolean. Upload test results files. Default: true.
# Publish Test Results v2
# Publish Test Results to Azure Pipelines/TFS.
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit' # 'JUnit' | 'NUnit' | 'VSTest' | 'XUnit'. Alias: testRunner. Required. Test result format. Default: JUnit.
testResultsFiles: '**/TEST-*.xml' # string. Required. Test results files. Default: **/TEST-*.xml.
#searchFolder: '$(System.DefaultWorkingDirectory)' # string. Search folder. Default: $(System.DefaultWorkingDirectory).
#mergeTestResults: false # boolean. Merge test results. Default: false.
#testRunTitle: # string. Test run title.
# Advanced
#buildPlatform: # string. Alias: platform. Build Platform.
#buildConfiguration: # string. Alias: configuration. Build Configuration.
#publishRunAttachments: true # boolean. Upload test results files. Default: true.
Input
testResultsFormat
- Formato dei risultati del test
Alias di input: testRunner
. string
. Obbligatorio. Valori consentiti: JUnit
, NUnit
, XUnit
VSTest
, CTest
. Valore predefinito: JUnit
.
Specifica il formato dei file di risultati da pubblicare. I formati seguenti sono supportati: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) e xUnit 2.
testResultsFormat
- Formato dei risultati del test
Alias di input: testRunner
. string
. Obbligatorio. Valori consentiti: JUnit
, NUnit
, XUnit
VSTest
. Valore predefinito: JUnit
.
Specifica il formato dei file di risultati da pubblicare. I formati seguenti sono supportati: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) e xUnit 2.
testResultsFiles
- File dei risultati dei test
string
. Obbligatorio. Valore predefinito: **/TEST-*.xml
.
Specifica uno o più file di risultati di test.
- È possibile usare un carattere jolly a cartella singola () e caratteri jolly ricorsivi (
*
**
). Ad esempio,**/TEST-*.xml
cerca tutti i file XML i cui nomi iniziano conTEST-
in tutte le sottodirectory. Se si usa VSTest come formato di risultato del test, il tipo di file deve essere modificato in.trx
ad esempio.**/TEST-*.trx
- È possibile specificare più percorsi separati da una nuova riga.
- Accetta inoltre modelli minimatch.
Ad esempio, !TEST[1-3].xml
esclude i file denominati TEST1.xml
, TEST2.xml
o TEST3.xml
.
searchFolder
- Search cartella
string
. Valore predefinito: $(System.DefaultWorkingDirectory)
.
facoltativo. Specifica la cartella da cercare nei file dei risultati del test.
mergeTestResults
- Risultati dei test di merge
boolean
. Valore predefinito: false
.
Quando questo valore booleano è true
, l'attività segnala i risultati del test da tutti i file rispetto a un'esecuzione di test singola. Se il valore è false
, l'attività crea un'esecuzione di test separata per ogni file di risultato del test.
Nota
Usare l'impostazione dei risultati del test di tipo merge per combinare i file dello stesso framework di test per garantire che il mapping dei risultati e la durata vengano calcolati correttamente.
failTaskOnFailedTests
- Errore se si verificano errori di test
boolean
. Valore predefinito: false
.
facoltativo. Quando il valore di questo booleano è true
, l'attività avrà esito negativo se uno dei test nel file dei risultati viene contrassegnato come non riuscito. Il valore predefinito è false
, che pubblica semplicemente i risultati dal file dei risultati.
failTaskOnFailureToPublishResults
- Errore se si verifica un errore nella pubblicazione dei risultati dei test
boolean
. Valore predefinito: false
.
Quando true
, non riesce l'attività se si verifica un errore nella pubblicazione dei risultati del test.
failTaskOnMissingResultsFile
- Errore se non vengono trovati file di risultato
boolean
. Valore predefinito: false
.
Eseguire l'errore dell'attività se non vengono trovati file di risultato.
testRunTitle
- Titolo esecuzione test
string
.
facoltativo. Specifica un nome per l'esecuzione del test in base al quale verranno segnalati i risultati. I nomi delle variabili dichiarati nella pipeline di compilazione o versione possono essere usati.
buildPlatform
- Piattaforma di compilazione
Alias di input: platform
. string
.
facoltativo. Specifica la piattaforma di compilazione in base alla quale deve essere segnalata l'esecuzione del test. Ad esempio, x64
o x86
. Se è stata definita una variabile per la piattaforma nell'attività di compilazione, usarla qui.
buildConfiguration
- Configurazione della compilazione
Alias di input: configuration
. string
.
facoltativo. Specifica la configurazione di compilazione in base alla quale deve essere segnalata l'esecuzione del test. Ad esempio, Debug
o Release
. Se è stata definita una variabile per la configurazione nell'attività di compilazione, usarla qui.
publishRunAttachments
- Caricare i file dei risultati dei test
boolean
. Valore predefinito: true
.
facoltativo. Quando questo valore booleano è true
, l'attività carica tutti i file di risultato del test come allegati all'esecuzione del test.
Opzioni di controllo delle attività
Tutte le attività dispongono di opzioni di controllo oltre ai relativi input attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.
Variabili di output
Nessuno.
Osservazioni
- Prerequisiti
- Impostazioni predefinite dell'attività
- Mapping dei formati dei risultati
- Supporto degli allegati
Questa attività pubblica i risultati dei test in Azure Pipelines o TFS quando vengono eseguiti test per offrire un'esperienza completa di report e analisi dei test. È possibile usare il testrunner di propria scelta che supporta il formato dei risultati necessario. I formati di risultati supportati includono CTest, JUnit (incluso PHPUnit), NUnit 2, NUnit 3, Visual Studio Test (TRX) e xUnit 2.
Altre attività predefinite, ad esempio l'attività Test di Visual Studio e l'attività dell'interfaccia della riga di comando Dot NetCore pubblicano automaticamente i risultati dei test nella pipeline. Attività come Ant, Maven, Gulp, Grunt e Xcode forniscono risultati di pubblicazione come opzione all'interno dell'attività o librerie di compilazione, ad esempio Cobertura e JaCoCo. Se si usa una di queste attività, non è necessaria un'attività Pubblica risultati test separata nella pipeline.
I risultati dei test pubblicati vengono visualizzati nella scheda Test nel riepilogo della pipeline. I risultati consentono di misurare la qualità della pipeline, esaminare la tracciabilità, risolvere gli errori e guidare la proprietà degli errori.
Nell'esempio seguente viene illustrata la configurazione dell'attività per pubblicare i risultati dei test.
È anche possibile usare questa attività in una pipeline di compilazione per pubblicare i risultati della code coverage prodotti durante l'esecuzione di test in Azure Pipelines o TFS per ottenere report di copertura.
Prerequisiti
Se si usa un agente self-hosted di Windows, il computer deve disporre di questo prerequisito installato:
- .NET Framework 4.6.2 o versione successiva
Impostazioni predefinite dell'attività
L'opzione predefinita usa il formato JUnit per pubblicare i risultati dei test. Quando si usa VSTest come testRunner, l'opzione testResultsFiles deve essere modificata in **/TEST-*.trx
.
testResultsFormat è un alias per il nome di input testRunner . I file dei risultati possono essere prodotti da più strumenti di esecuzione, non solo da uno strumento di esecuzione specifico. Ad esempio, il formato dei risultati jUnit è supportato da molti strumenti di esecuzione e non solo da jUnit.
Per pubblicare i risultati dei test per Python usando YAML, vedere Python nella sezione Ecosistemi di questi argomenti, che include anche esempi per altri linguaggi.
Mapping dei formati dei risultati
Questa tabella elenca i campi riportati nella scheda Test in un riepilogo della compilazione o della versione e il mapping corrispondente con gli attributi nei formati dei risultati del test supportati.
Ambito | Campo | Test di Visual Studio (TRX) |
---|---|---|
Esecuzione dei test | Titolo | Titolo esecuzione test specificato nell'attività |
Data di inizio | /TestRun/Times.Attributes["start"]. Valore | |
Data di completamento | /TestRun/Times.Attributes["finish"]. Valore | |
Durata | Data di completamento - Data di inizio | |
Allegati | Vedere la sezione supporto allegati di seguito | |
Risultato del test | Titolo | /TestRun/Results/UnitTestResult.Attributes["testName"]. Value o /TestRun/Results/WebTestResult.Attributes["testName"]. Value o /TestRun/Results/TestResultAggregation.Attributes["testName"]. Valore |
Data di inizio | /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value o /TestRun/Results/WebTestResult.Attributes["startTime"]. Value o /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Valore | |
Data di completamento | /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value + /TestRun/Results/UnitTestResult.Attributes["duration"]. Value o /TestRun/Results/WebTestResult.Attributes["startTime"]. Value + /TestRun/Results/WebTestResult.Attributes["duration"]. Value o /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Value + /TestRun/Results/TestResultAggregation.Attributes["duration"]. Valore | |
Durata | /TestRun/Results/UnitTestResult.Attributes["duration"]. Value o /TestRun/Results/WebTestResult.Attributes["duration"]. Valore o /TestRun/Results/TestResultAggregation.Attributes["duration"]. Valore | |
Proprietario | /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["name"]. Valore | |
Risultato | /TestRun/Results/UnitTestResult.Attributes["outcome"]. Value o /TestRun/Results/WebTestResult.Attributes["outcome"]. Value o /TestRun/Results/TestResultAggregation.Attributes["outcome"]. Valore | |
Messaggio di errore | /TestRun/Results/UnitTestResult/Output/ErrorInfo/Message.InnerText o /TestRun/Results/WebTestResultOutput/ErrorInfo/Message.InnerText o /TestRun/Results/TestResultAggregation/Output/ErrorInfo/Message.InnerText | |
Analisi dello stack | /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.InnerText Or /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText Or /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText | |
Allegati | Vedere la sezione supporto allegati di seguito | |
Log della console | /TestRun/Results/UnitTestResult/Output/StdOut.InnerText o /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText | |
Log degli errori della console | /TestRun/Results/UnitTestResult/Output/StdErr.InnerText o /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText | |
Nome agente | /TestRun/Results/UnitTestResult.Attributes["computerName"]. Value o /TestRun/Results/WebTestResult.Attributes["computerName"]. Value o /TestRun/Results/TestResultAggregation.Attributes["computerName"]. Valore | |
File di test | /TestRun/TestDefinitions/UnitTest.Attributes["storage"]. Valore | |
Priorità | /TestRun/TestDefinitions/UnitTest.Attributes["priority"]. Valore |
Nota
La durata viene usata solo quando la data di inizio e la data di completamento non sono disponibili.
Il formato del nome completo per testName è Namespace.Testclass.Methodname con un limite di caratteri pari a 512. Se il test è basato sui dati e ha parametri, il limite di caratteri includerà i parametri.
Durante la pubblicazione del risultato del test, è possibile che venga visualizzato questo errore: Impossibile pubblicare i risultati del test: Priorità non valida specificata
Questo errore si verifica se uno dei metodi di test ha la priorità impostata sopra 255, correggere la priorità del metodo di test nel codice ed eseguire di nuovo i test. È possibile esaminare il file trx generato per visualizzare tutti i test con priorità maggiore di 255.
Supporto degli allegati
L'attività Pubblica risultati test fornisce il supporto per gli allegati per i risultati dell'esecuzione del test e dei test per i formati seguenti. Per i progetti pubblici, supportiamo 2 GB di allegati totali.
Test di Visual Studio (TRX)
Ambito | Tipo | Percorso |
---|---|---|
Esecuzione dei test | Agente di raccolta dati | /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Valore |
Risultato del test | /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["path"]. Valore | |
Code coverage | /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["binaryFile"]. Valore e /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["pdbFile"]. Valore | |
Risultato del test | Raccolta dati | /TestRun/Results/UnitTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Valore o /TestRun/Results/WebTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Valore o /TestRun/Results/TestResultAggregation/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Valore |
Risultato del test | /TestRun/Results/UnitTestResult/ResultFiles/ResultFile.Attributes["path"]. Valore o /TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes["path"]. Valore o /TestRun/Results/TestResultAggregation/ResultFiles/ResultFile.Attributes["path"]. Valore |
Nota
L'opzione per caricare il file dei risultati del test come allegato è un'opzione predefinita nell'attività, applicabile a tutti i formati.
Esempio
Docker
Per le app basate su Docker, esistono molti modi per compilare l'applicazione ed eseguire test:
- Compilare e testare in una pipeline di compilazione: le compilazioni e i test eseguiti nella pipeline e i risultati dei test vengono pubblicati usando l'attività Pubblica risultati test .
- Compilare e testare con un Dockerfile a più fasi: le compilazioni e i test vengono eseguiti all'interno del contenitore usando un file Docker a più fasi, come tali risultati di test non vengono pubblicati nella pipeline.
- Compilare, testare e pubblicare i risultati con un Dockerfile: compilazioni e test eseguiti all'interno del contenitore e i risultati vengono pubblicati nella pipeline. Vedere l'esempio seguente.
Compilare, testare e pubblicare risultati con un file Docker
In questo approccio si compilano il codice ed eseguono test all'interno del contenitore usando un file Docker. I risultati del test vengono quindi copiati nell'host da pubblicare nella pipeline. Per pubblicare i risultati del test in Azure Pipelines, è possibile usare l'attività Pubblica risultati test . L'immagine finale verrà pubblicata in Docker o Registro Azure Container.
Ottenere il codice
Creare un
Dockerfile.build
file nella radice della directory del progetto con quanto segue:# Build and run tests inside the docker container FROM mcr.microsoft.com/dotnet/sdk:2.1 WORKDIR /app # copy the contents of agent working directory on host to workdir in container COPY . ./ # dotnet commands to build, test, and publish RUN dotnet restore RUN dotnet build -c Release RUN dotnet test dotnetcore-tests/dotnetcore-tests.csproj -c Release --logger "trx;LogFileName=testresults.trx" RUN dotnet publish -c Release -o out ENTRYPOINT dotnet dotnetcore-sample/out/dotnetcore-sample.dll
Questo file contiene le istruzioni per compilare codice ed eseguire test. I test vengono quindi copiati in un file
testresults.trx
all'interno del contenitore.Per rendere l'immagine finale il più piccola possibile, contenente solo gli artefatti di runtime e distribuzione, sostituire il contenuto dell'immagine esistente
Dockerfile
con quanto segue:# This Dockerfile creates the final image to be published to Docker or # Azure Container Registry # Create a container with the compiled asp.net core app FROM mcr.microsoft.com/dotnet/aspnet:2.1 # Create app directory WORKDIR /app # Copy only the deployment artifacts COPY /out . ENTRYPOINT ["dotnet", "dotnetcore-sample.dll"]
Definire la pipeline di compilazione
Se si dispone di un account Docker Hub e si vuole eseguire il push dell'immagine nel Registro Docker, sostituire il contenuto del
.vsts-ci.docker.yml
file con quanto segue:# Build Docker image for this app, to be published to Docker Registry pool: vmImage: 'ubuntu-latest' variables: buildConfiguration: 'Release' steps: - script: | docker build -f Dockerfile.build -t $(dockerId)/dotnetcore-build:$BUILD_BUILDID . docker run --name dotnetcoreapp --rm -d $(dockerId)/dotnetcore-build:$BUILD_BUILDID docker cp dotnetcoreapp:app/dotnetcore-tests/TestResults $(System.DefaultWorkingDirectory) docker cp dotnetcoreapp:app/dotnetcore-sample/out $(System.DefaultWorkingDirectory) docker stop dotnetcoreapp - task: PublishTestResults@2 inputs: testRunner: VSTest testResultsFiles: '**/*.trx' failTaskOnFailedTests: true - script: | docker build -f Dockerfile -t $(dockerId)/dotnetcore-sample:$BUILD_BUILDID . docker login -u $(dockerId) -p $pswd docker push $(dockerId)/dotnetcore-sample:$BUILD_BUILDID env: pswd: $(dockerPassword)
In alternativa, se si configura un Registro Azure Container e si vuole eseguire il push dell'immagine nel Registro di sistema, sostituire il contenuto del
.vsts-ci.yml
file con quanto segue:# Build Docker image for this app to be published to Azure Container Registry pool: vmImage: 'ubuntu-latest' variables: buildConfiguration: 'Release' steps: - script: | docker build -f Dockerfile.build -t $(dockerId)/dotnetcore-build:$BUILD_BUILDID . docker run --name dotnetcoreapp --rm -d $(dockerId)/dotnetcore-build:$BUILD_BUILDID docker cp dotnetcoreapp:app/dotnetcore-tests/TestResults $(System.DefaultWorkingDirectory) docker cp dotnetcoreapp:app/dotnetcore-sample/out $(System.DefaultWorkingDirectory) docker stop dotnetcoreapp - task: PublishTestResults@2 inputs: testRunner: VSTest testResultsFiles: '**/*.trx' failTaskOnFailedTests: true - script: | docker build -f Dockerfile -t $(dockerId).azurecr.io/dotnetcore-sample:$BUILD_BUILDID . docker login -u $(dockerId) -p $pswd $(dockerid).azurecr.io docker push $(dockerId).azurecr.io/dotnetcore-sample:$BUILD_BUILDID env: pswd: $(dockerPassword)
Eseguire il push della modifica nel ramo principale nel repository.
Se si usa Registro Azure Container, assicurarsi di aver pre-creato il Registro di sistema nella portale di Azure. Copiare il nome utente amministratore e la password visualizzati nella sezione Chiavi di accesso delle impostazioni del Registro di sistema in portale di Azure.
Aggiornare la pipeline di compilazione con quanto segue
- Pool di agenti:
Hosted Ubuntu 1604
- dockerId: impostare il valore sull'ID Docker per DockerHub o sul nome utente amministratore per Registro Azure Container.
- dockerPassword: impostare il valore sulla password per DockerHub o la password amministratore Registro Azure Container.
- Percorso file YAML:
/.vsts-ci.docker.yml
- Pool di agenti:
Accodare una nuova compilazione e watch crea e esegue il push di un'immagine Docker nel Registro di sistema e i risultati dei test in Azure DevOps.
Requisiti
Requisito | Descrizione |
---|---|
Tipi di pipeline | YAML, build classica, versione classica |
Esecuzione in | Agente, DeploymentGroup |
Richieste | Nessuno |
Capabilities | Questa attività non soddisfa le richieste per le attività successive nel processo. |
Restrizioni dei comandi | Qualsiasi |
Variabili impostabili | Qualsiasi |
Versione agente | 2.0.0 o versione successiva |
Categoria attività | Test |