PublishTestResults@2 - Test Sonuçlarını Yayımla v2 görevi

Test sonuçlarını Azure Pipelines'da yayımlama.

Test Sonuçlarını Azure Pipelines/TFS'de yayımlama.

Syntax

# 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.

Girişler

testResultsFormat - Test sonucu biçimi
Giriş diğer adı: testRunner. string. Gereklidir. İzin verilen değerler: JUnit, NUnit, VSTest, XUnit, CTest. Varsayılan değer: JUnit.

Yayımlamak istediğiniz sonuç dosyalarının biçimini belirtir. Aşağıdaki biçimler desteklenir: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) ve xUnit 2.


testResultsFormat - Test sonucu biçimi
Giriş diğer adı: testRunner. string. Gereklidir. İzin verilen değerler: JUnit, NUnit, VSTest, XUnit. Varsayılan değer: JUnit.

Yayımlamak istediğiniz sonuç dosyalarının biçimini belirtir. Aşağıdaki biçimler desteklenir: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) ve xUnit 2.


testResultsFiles - Test sonuçları dosyaları
string. Gereklidir. Varsayılan değer: **/TEST-*.xml.

Bir veya daha fazla test sonucu dosyası belirtir.

  • Tek klasörlü joker karakter (*) ve özyinelemeli joker karakter (** kullanabilirsiniz. Örneğin, **/TEST-*.xml tüm alt dizinlerde adları ile TEST- başlayan tüm XML dosyalarını arar. Test sonucu biçimi olarak VSTest kullanılıyorsa, dosya türü şöyle değiştirilmelidir .trx : **/TEST-*.trx
  • Yeni bir satırla ayrılmış olarak birden çok yol belirtilebilir.
  • Ayrıca , minimatch desenlerini kabul eder.

Örneğin, !TEST[1-3].xml , TEST2.xmlveya TEST3.xmladlı TEST1.xmldosyaları dışlar.


searchFolder - Arama klasörü
string. Varsayılan değer: $(System.DefaultWorkingDirectory).

İsteğe bağlı. Test sonucu dosyalarının aranması için klasörü belirtir.


mergeTestResults - Test sonuçlarını birleştirme
boolean. Varsayılan değer: false.

Bu boole değerinin değeri olduğunda true, görev tek bir test çalıştırmasına karşı tüm dosyalardan test sonuçlarını raporlar. değer ise false, görev her test sonucu dosyası için ayrı bir test çalıştırması oluşturur.

Not

Sonuçları eşleme ve sürenin doğru hesaplandığından emin olmak için aynı test çerçevesindeki dosyaları birleştirmek için test sonuçlarını birleştirme ayarını kullanın.


failTaskOnFailedTests - Test hataları varsa başarısız olur
boolean. Varsayılan değer: false.

İsteğe bağlı. Bu boole değerinin değeri olduğunda true, sonuç dosyasındaki testlerden herhangi biri başarısız olarak işaretlenirse görev başarısız olur. Varsayılan değer olan false, sonuç dosyasındaki sonuçları yayımlar.


failTaskOnFailureToPublishResults - Test sonuçlarını yayımlamada hata varsa başarısız olur
boolean. Varsayılan değer: false.

olduğunda true, test sonuçlarını yayımlamada hata varsa görevi başarısız olur.


failTaskOnMissingResultsFile - Sonuç dosyası bulunamazsa başarısız olur
boolean. Varsayılan değer: false.

Sonuç dosyası bulunamazsa görev başarısız olur.


testRunTitle - Test çalıştırması başlığı
string.

İsteğe bağlı. Sonuçların bildirileceği test çalıştırması için bir ad belirtir. Derleme veya yayın işlem hattında bildirilen değişken adları kullanılabilir.


buildPlatform - Platform Oluşturma
Giriş diğer adı: platform. string.

İsteğe bağlı. Test çalıştırmasının raporlanması gereken derleme platformunu belirtir. Örneğin: x64 veya x86. Derleme görevinizde platform için bir değişken tanımladıysanız burada kullanın.


buildConfiguration - Derleme Yapılandırması
Giriş diğer adı: configuration. string.

İsteğe bağlı. Test çalıştırmasının raporlanması gereken derleme yapılandırmasını belirtir. Örneğin: Debug veya Release. Derleme görevinizdeki yapılandırma için bir değişken tanımladıysanız burada kullanın.


publishRunAttachments - Test sonuçları dosyalarını karşıya yükleme
boolean. Varsayılan değer: true.

İsteğe bağlı. Bu boole değerinin değeri olduğunda true, görev tüm test sonucu dosyalarını test çalıştırmasına ek olarak yükler.


Görev denetim seçenekleri

Tüm görevlerde görev girişlerine ek olarak denetim seçenekleri vardır. Daha fazla bilgi için bkz . Denetim seçenekleri ve ortak görev özellikleri.

Çıkış değişkenleri

Yok.

Açıklamalar

Bu görev, kapsamlı bir test raporlama ve analiz deneyimi sağlamak için testler yürütürken test sonuçlarını Azure Pipelines veya TFS'de yayımlar. İstediğiniz test çalıştırıcısını kullanarak ihtiyacınız olan sonuç biçimini destekleyebilirsiniz. Desteklenen sonuç biçimleri CTest, JUnit (PHPUnit dahil), NUnit 2, NUnit 3, Visual Studio Test (TRX) ve xUnit 2'dir.

Visual Studio Test görevi ve Dot NetCore CLI görevi gibi diğer yerleşik görevler, test sonuçlarını otomatik olarak işlem hattına yayımlar. Ant, Maven, Gulp, Grunt ve Xcode gibi görevler, görev içinde bir seçenek olarak yayımlama sonuçları sağlar veya Cobertura ve JaCoCo gibi kitaplıklar oluşturur. Bu görevlerden herhangi birini kullanıyorsanız, işlem hattında ayrı bir Test Sonuçlarını Yayımla görevine ihtiyacınız yoktur.

Yayımlanan test sonuçları, işlem hattı özetindeki Testler sekmesinde görüntülenir. Sonuçlar işlem hattı kalitesini ölçmenize, izlenebilirliği gözden geçirmenize, hataları gidermenize ve sürücü hatası sahipliğini gidermenize yardımcı olur.

Aşağıdaki örnekte görevin test sonuçlarını yayımlayacak şekilde yapılandırıldığı gösterilmektedir.

Test geçmişi sayfasını açma

Bu görevi, kapsam raporlaması almak amacıyla testleri çalıştırırken oluşturulan kod kapsamı sonuçlarını Azure Pipelines veya TFS'de yayımlamak için bir derleme işlem hattında da kullanabilirsiniz.

Önkoşullar

Windows şirket içinde barındırılan aracı kullanıyorsanız makinenizde şu önkoşul yüklü olmalıdır:

Görev varsayılanları

Varsayılan seçenek, test sonuçlarını yayımlamak için JUnit biçimini kullanır. TESTRunner olarak VSTest kullanılırken testResultsFiles seçeneği olarak **/TEST-*.trxdeğiştirilmelidir.

testResultsFormat , testRunner giriş adı için bir diğer addır. Sonuç dosyaları yalnızca belirli bir çalıştırıcı tarafından değil, birden çok çalıştırıcı tarafından oluşturulabilir. Örneğin, jUnit sonuç biçimi yalnızca jUnit tarafından değil, birçok çalıştırıcı tarafından desteklenir.

YAML kullanarak Python'a yönelik test sonuçlarını yayımlamak için, diğer dillere yönelik örnekleri de içeren bu konuların Ekosistemler bölümünde Python'a bakın.

Sonuç biçimleri eşlemesi

Bu tabloda, derleme veya yayın özetinde Testler sekmesinde bildirilen alanlar ve desteklenen test sonucu biçimlerindeki özniteliklerle ilgili eşleme listelenir.

Kapsam Alan Visual Studio Testi (TRX)
Test çalıştırması Başlık Görevde belirtilen test çalıştırması başlığı
Başlangıç tarihi /TestRun/Times.Attributes["start"]. Değer
Tamamlanma tarihi /TestRun/Times.Attributes["finish"]. Değer
Süre Tamamlanma tarihi - Başlangıç tarihi
Ekler Aşağıdaki Ekler destek bölümüne bakın
Test sonucu Başlık /TestRun/Results/UnitTestResult.Attributes["testName"]. Value Or /TestRun/Results/WebTestResult.Attributes["testName"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["testName"]. Değer
Başlangıç tarihi /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Değer
Tamamlanma tarihi /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value + /TestRun/Results/UnitTestResult.Attributes["duration"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value + /TestRun/Results/WebTestResult.Attributes["duration"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Value + /TestRun/Results/TestResultAggregation.Attributes["duration"]. Değer
Süre /TestRun/Results/UnitTestResult.Attributes["duration"]. Value Or /TestRun/Results/WebTestResult.Attributes["duration"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["duration"]. Değer
Sahip /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["name"]. Değer
Sonuç /TestRun/Results/UnitTestResult.Attributes["outcome"]. Value Or /TestRun/Results/WebTestResult.Attributes["outcome"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["outcome"]. Değer
Hata iletisi /TestRun/Results/UnitTestResult/Output/ErrorInfo/Message.InnerText veya /TestRun/Results/WebTestResultOutput/ErrorInfo/Message.InnerText veya /TestRun/Results/TestResultAggregation/Output/ErrorInfo/Message.InnerText
Yığın izleme /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.InnerText veya /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText veya /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText
Ekler Aşağıdaki Ekler destek bölümüne bakın
Konsol günlüğü /TestRun/Results/UnitTestResult/Output/StdOut.InnerText or /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText or /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText
Konsol hata günlüğü /TestRun/Results/UnitTestResult/Output/StdErr.InnerText Or /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText
Aracı adı /TestRun/Results/UnitTestResult.Attributes["computerName"]. Value Or /TestRun/Results/WebTestResult.Attributes["computerName"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["computerName"]. Değer
Test dosyası /TestRun/TestDefinitions/UnitTest.Attributes["storage"]. Değer
Öncelik /TestRun/TestDefinitions/UnitTest.Attributes["priority"]. Değer

Not

Süre yalnızca Başlangıç tarihi ve Tamamlanma tarihi kullanılamadığında kullanılır.

testName için tam ad biçimi, 512 karakter sınırına sahip Namespace.Testclass.Methodname biçimidir. Test veri temelliyse ve parametreleri varsa, karakter sınırı parametreleri içerir.

Test sonucunu yayımlarken şu hatayı alabilirsiniz: Test sonuçları yayımlanamadı: Geçersiz Öncelik belirtildi

Test yöntemlerinden herhangi birinin önceliği 255'in üzerinde ayarlanmışsa, koddaki test yöntemi önceliğini düzeltirse ve testleri yeniden yürütürse bu hata oluşur. 255'ten büyük önceliğe sahip tüm testleri görmek için oluşturulan trx dosyasını gözden geçirebilirsiniz.

Ekler desteği

Test Sonuçlarını Yayımla görevi, aşağıdaki biçimler için hem test çalıştırması hem de test sonuçları için ekler için destek sağlar. Genel projeler için toplam 2 GB ekleri destekliyoruz.

Visual Studio Testi (TRX)

Kapsam Tür Yol
Test çalıştırması Veri Toplayıcı /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Değer
Test Sonucu /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["path"]. Değer
Kod Kapsamı /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["binaryFile"]. Value And /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["pdbFile"]. Değer
Test sonucu Veri Toplayıcılar /TestRun/Results/UnitTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Value Or /TestRun/Results/WebTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Value Or /TestRun/Results/TestResultAggregation/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Değer
Test Sonucu /TestRun/Results/UnitTestResult/ResultFiles/ResultFile.Attributes["path"]. Value Or /TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes["path"]. Value Or /TestRun/Results/TestResultAggregation/ResultFiles/ResultFile.Attributes["path"]. Değer

Not

Test sonuçları dosyasını ek olarak karşıya yükleme seçeneği, görevdeki tüm biçimler için geçerli olan varsayılan bir seçenektir.

Örnekler

Docker

Docker tabanlı uygulamalar için uygulamanızı derlemenin ve testleri çalıştırmanın birçok yolu vardır:

  • Derleme işlem hattında derleme ve test: derlemeler ve testler işlem hattında yürütülür ve test sonuçları Test Sonuçlarını Yayımla görevi kullanılarak yayımlanır.
  • Çok aşamalı bir Dockerfile ile derleme ve test etme: Derlemeler ve testler kapsayıcı içinde çok aşamalı bir Docker dosyası kullanılarak yürütülür, bu tür test sonuçları işlem hattına geri yayımlanmaz.
  • Dockerfile ile sonuçları derleme, test etme ve yayımlama: derlemeler ve testler kapsayıcı içinde yürütülür ve sonuçlar işlem hattında yeniden yayımlanır. Aşağıdaki örneğe bakın.

Docker dosyasıyla sonuçları derleme, test etme ve yayımlama

Bu yaklaşımda kodunuzu derler ve docker dosyası kullanarak kapsayıcının içinde testler çalıştırırsınız. Test sonuçları daha sonra işlem hattında yayımlanmak üzere konağa kopyalanır. Test sonuçlarını Azure Pipelines'da yayımlamak için Test Sonuçlarını Yayımla görevini kullanabilirsiniz. Son görüntü Docker'da veya Azure Container Registry yayımlanır.

Kodu alma
  1. Proje dizininizin kökünde aşağıdakilerle bir Dockerfile.build dosya oluşturun:

    # 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
    

    Bu dosya, kod oluşturma ve testleri çalıştırma yönergelerini içerir. Testler daha sonra kapsayıcı içindeki bir dosyaya testresults.trx kopyalanır.

  2. Yalnızca çalışma zamanı ve dağıtım yapıtlarını içeren son görüntüyü mümkün olduğunca küçük hale getirmek için, var olanın Dockerfile içeriğini aşağıdakilerle değiştirin:

    # 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"]
    
Derleme işlem hattını tanımlama
  1. Docker Hub hesabınız varsa ve görüntüyü Docker kayıt defterinize göndermek istiyorsanız, dosyanın içeriğini .vsts-ci.docker.yml aşağıdakilerle değiştirin:

    # 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)
    

    Alternatif olarak, bir Azure Container Registry yapılandırıp görüntüyü bu kayıt defterine göndermek istiyorsanız, dosyanın içeriğini .vsts-ci.yml aşağıdakilerle değiştirin:

    # 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)
    
  2. Değişikliği deponuzdaki ana dala gönderin.

  3. Azure Container Registry kullanıyorsanız, Azure portal kayıt defterini önceden oluşturduğunuzdan emin olun. Azure portal kayıt defteri ayarlarının Erişim anahtarları bölümünde gösterilen yönetici kullanıcı adını ve parolasını kopyalayın.

  4. Derleme işlem hattınızı aşağıdakilerle güncelleştirin

    • Aracı havuzu: Hosted Ubuntu 1604
      • dockerId: Değeri DockerHub için Docker kimliğinize veya Azure Container Registry yönetici kullanıcı adına ayarlayın.
      • dockerPassword: DockerHub veya yönetici parolası Azure Container Registry için değerini parolanıza ayarlayın.
    • YAML dosya yolu: /.vsts-ci.docker.yml
  5. Yeni bir derlemeyi kuyruğa alın ve oluşturup watch bir Docker görüntüsü oluşturup kayıt defterinize ve test sonuçlarını Azure DevOps'a gönderin.

Gereksinimler

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalışır Agent, DeploymentGroup
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için hiçbir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü 2.0.0 veya üzeri
Görev kategorisi Test etme