Aracılığıyla paylaş


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

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

Sözdizimi

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

Girişler

testResultsFormat - Test sonucu biçimi
Giriş diğer adı: testRunner. string. Gerekli. İ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.

Tavsiye

VSTest formatı, TRX formatını ifade eder. Bu nedenle, Microsoft.Testing.Platform (MTP) ile TRX üretiyorsanız ve VSTest'e özgü değilse de çalışır. Değer, MTP'nin kullanıma sunulmasından önce tarihsel nedenlerden dolayı VSTest'tir.


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

Bir veya daha fazla test sonucu dosyası belirtir.

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

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


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

Opsiyonel. Test sonucu dosyalarının aranması için klasörü belirtir.


test sonuçlarını birleştirmemergeTestResults -
boolean. Varsayılan değer: false.

Bu boole değerinin değeri trueolduğunda, görev tüm dosyalardan alınan test sonuçlarını tek bir test çalıştırmasıraporlar. Değer falseise, görev her test sonucu dosyası için ayrı bir test çalıştırması oluşturur. Daha iyi performans elde etmek için, bu seçenek falseolarak ayarlanmış olsa bile 100'den fazla sonuç dosyası varsa sonuçlar her zaman tek bir çalıştırmada birleştirilir.

Uyarı

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


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

Opsiyonel. Bu boole değerinin değeri trueolduğunda, sonuç dosyasındaki testlerden herhangi biri başarısız olarak işaretlenirse görev başarısız olur. Varsayılan değer falseolur ve sonuç dosyasındaki sonuçları yayımlar.


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

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.


çalıştırma başlığını test
string.

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


platformbuildPlatform - oluşturma
Giriş diğer adı: platform. string.

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


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

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

Opsiyonel. Bu boole değerinin değeri trueolduğunda, görev tüm test sonucu dosyalarını test çalıştırmasına ek olarak yükler.


Görev denetimi seçenekleri

Tüm görevlerin, 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ülürken test sonuçlarını Azure Pipelines veya TFS'de yayımlar. İstediğiniz test çalıştırıcısını, ihtiyacınız olan sonuç biçimini destekleyen kullanabilirsiniz. Desteklenen sonuç biçimleri CTest , JUnit (PHPUnitdahil), NUnit 2, NUnit 3, Visual Studio Test (TRX) ve xUnit 2içerir.

Visual Studio Test görevi ve Dot NetCore CLI görevi gibi diğer yerleşik görevler test sonuçlarını işlem hattına otomatik olarak yayımlar. Ant, Maven, Gulp, Gruntve X code gibi görevler, görev içinde bir seçenek olarak yayımlama sonuçları sağlar veya Cobertura ve JaCoCogibi kitaplıklar oluşturur. Bu görevlerden herhangi birini kullanıyorsanız, işlem hattında test sonuçlarını yayımlama ayrı bir 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

Kapsam raporlaması almak için testleri Azure Pipelines veya TFS'de çalıştırırken oluşturulan kod kapsamı sonuçlarını yayımlamak için bu görevi 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. testRunnerolarak VSTest kullanılırken, testResultsFiles seçeneği **/TEST-*.trxolarak değ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, bu konuların Ekosistemleri bölümünde python bölümüne bakın ve diğer diller için örnekler de içerir.

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 Saha Visual Studio Testi (TRX)
Test çalıştırması Başlık Görevde belirtilen test çalıştırma başlığı
Başlangıç tarihi /TestRun/Times.Attributes[""]başlar. Değer
Tamamlanma tarihi /TestRun/Times.Attributes[""]sonlanıyor. Değer
Süre Tamamlanma tarihi - Başlangıç tarihi
Ekleri Aşağıdaki Ek desteği 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["süre"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value + /TestRun/Results/WebTestResult.Attributes["süre"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Value + /TestRun/Results/TestResultAggregation.Attributes["süre"]. Değer
Süre /TestRun/Results/UnitTestResult.Attributes["süre"]. Value Or /TestRun/Results/WebTestResult.Attributes["süre"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["süre"]. Değer
Sahip /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["adı "]. Değer
Sonuç /TestRun/Results/UnitTestResult.Attributes[" "]sonucu. Value Or /TestRun/Results/WebTestResult.Attributes["sonucu "]. Value Or /TestRun/Results/TestResultAggregation.Attributes["sonuç"]. Değer
Hata mesajı /TestRun/Results/UnitTestResult/Output/ErrorInfo/Message.InnerText veya /TestRun/Results/WebTestResultOutput/ErrorInfo/Message.InnerText Or /TestRun/Results/TestResultAggregation/Output/ErrorInfo/Message.InnerText
Yığın izleme /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.InnerText veya /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText or /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText
Ekleri Aşağıdaki Ek desteği bölümüne bakın
Konsol günlüğü /TestRun/Results/UnitTestResult/Output/StdOut.InnerText veya /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText
Konsol hata günlüğü /TestRun/Results/UnitTestResult/Output/StdErr.InnerText Veya /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText
Temsilci 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["depolama"]. Değer
Öncelik /TestRun/TestDefinitions/UnitTest.Attributes["öncelik"]. Değer

Uyarı

Süre yalnızca Başlangıç Tarihi ve Tamamlanma Tarihi kullanılabilir olmadığında kullanılır.

testName için tam ad biçimi, 512 karakter sınırına sahip Namespace.Testclass.Methodname . 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 eki 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["yolu "]. 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["yolu"]. Value Or /TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes["yolu"]. Value Or /TestRun/Results/TestResultAggregation/ResultFiles/ResultFile.Attributes["yolu "]. Değer

Uyarı

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ı dockerfilederleme ve test etme: derlemeler ve testler kapsayıcı içinde çok aşamalı bir Docker dosyası kullanarak yürütülür, bu test sonuçları işlem hattında yeniden yayımlanmaz.
  • Dockerfile ile derleme, test ve yayımlama sonuçlarını: 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 örniğe bakın.

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

Bu yaklaşımda bir Docker dosyası kullanarak kodunuzu derleyip kapsayıcının içinde testler çalıştıracaksı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 veya Azure Container Registry'de yayımlanır.

Kodu al
  1. Proje dizininizin kökünde aşağıdakilerle bir Dockerfile.build dosyası 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ının içindeki testresults.trx bir dosyaya 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 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, .vsts-ci.docker.yml dosyasının içeriğini 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ır ve görüntüyü bu kayıt defterine göndermek isterseniz, .vsts-ci.yml dosyasının içeriğini 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 portalda kayıt defteri önceden oluşturduğunuzdan emin olun. Azure portalındaki 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ısı havuzu: Hosted Ubuntu 1604
      • dockerId : Değeri DockerHub için Docker kimliğinize veya Azure Container Registry'nin yönetici kullanıcı adına ayarlayın.
      • dockerPassword : DockerHub için parolanıza veya Azure Container Registry yönetici parolasına değerini ayarlayın.
    • YAML dosya yolunu : /.vsts-ci.docker.yml
  5. Yeni bir derlemeyi kuyruğa alın ve 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
Talepleri Hiç kimse
Özellikleri Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi bir
Ayarlanabilir değişkenleri Herhangi bir
Aracı sürümü 2.0.0 veya üzeri
Görev kategorisi Sınav