Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 dizinlerdekiTEST-
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].xml
TEST1.xml
, TEST2.xml
veya TEST3.xml
adlı 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 true
olduğunda, görev tüm dosyalardan alınan test sonuçlarını tek bir test çalıştırmasıraporlar. Değer false
ise, 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 false
olarak 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 true
olduğ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 false
olur 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 true
olduğ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:
- .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.
testRunnerolarak VSTest kullanılırken, testResultsFiles seçeneği **/TEST-*.trx
olarak 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.
- Visual Studio Test (TRX)
- JUnit
- NUnit 2
- NUnit 3
- xBirim 2
- CTest (Deney)
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
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.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
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)
Değişikliği deponuzdaki ana dala gönderin.
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.
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
-
Aracısı havuzu:
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 |