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ı ileTEST-
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.xml
veya TEST3.xml
adlı TEST1.xml
dosyaları 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.
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:
- .NET Framework 4.6.2 veya sonraki bir sürüm
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-*.trx
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, 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
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.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
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)
Değişikliği deponuzdaki ana dala gönderin.
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.
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
- Aracı havuzu:
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 |