Test Sonuçları görevi Yayımla
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015
Not
Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatlarıtanımlarolarak adlandırılır, çalışmalaraderlemelerdenir, hizmet bağlantılarınahizmet uç noktalarıdenir, aşamalarortamlarolarak adlandırılır ve işleraşamalarolarak adlandırılır.
bu görev, kapsamlı bir test raporlama ve analiz deneyimi sağlamak üzere testler yürütüldüğünde, test sonuçlarını Azure Pipelines veya TFS 'ye yayınlar. Seçtiğiniz sonuç biçimini destekleyen Test Çalıştırıcısı ' nı kullanabilirsiniz. desteklenen sonuçlar formatları ctest, junit ( phpunitdahil), nunit 2, nunit 3, Visual Studio Test (TRX) ve xunit 2içerir.
Visual Studio test görevi ve nokta netcore clı görevi gibi diğer yerleşik görevler otomatik olarak test sonuçlarını işlem hattına yayımlarken Ant, maven, Gulp, grim, .net Core ve xcode gibi görevler, görev içinde bir seçenek olarak yayımlama sonuçları sağlar veya Cobertura ve jacocogibi derleme kitaplıkları sağlar. Bu görevlerden herhangi birini kullanıyorsanız, işlem hattında ayrı bir yayımlama test sonuçları görevine gerek kalmaz.
Yayımlanan test sonuçları, işlem hattı özetindeki testler sekmesinde görüntülenir ve işlem hattı kalitesini ölçmenize, izlenebilirlik ' i incelemenizi, hataları gidermenize ve hata sahipliğini sağlamanıza yardımcı olur.
Aşağıdaki örnek, test sonuçlarını yayımlamak için yapılandırılan görevi gösterir.

bu görevi ayrıca bir yapı ardışık düzeninde kullanarak, kapsam raporlaması elde etmek için Azure Pipelines veya TFS 'ye testler çalıştırırken üretilen kod kapsamı sonuçlarını yayımlayabilirsiniz .
Önkoşulları denetleme
Windows kendi kendine barındırılan bir aracı kullanıyorsanız, makinenizde bu önkoşulun yüklü olduğundan emin olun:
- .NET Framework 4.6.2 veya sonraki bir sürümü
Erişim
seçim
YAML kod parçacığı
# Publish Test Results
# Publish test results to Azure Pipelines
- task: PublishTestResults@2
inputs:
#testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit, cTest
#testResultsFiles: '**/TEST-*.xml'
#searchFolder: '$(System.DefaultWorkingDirectory)' # Optional
#mergeTestResults: false # Optional
#failTaskOnFailedTests: false # Optional
#testRunTitle: # Optional
#buildPlatform: # Optional
#buildConfiguration: # Optional
#publishRunAttachments: true # Optional
Varsayılan seçenek, test sonuçlarını yayımlamak için JUnit biçimini kullanır. VSTest, TestRunnerolarak kullanılırken, testresultsfiles belirtilmelidir seçeneği 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ısı değil birden çok çalıştırma tarafından üretilebilir. Örneğin, jUnit sonuç biçimi yalnızca jUnit değil birçok çalıştırma tarafından desteklenir.
YAML kullanarak Python için test sonuçlarını yayımlamak için, bu konuların ekosistemleri bölümünde bkz. Python , diğer dillere yönelik örnekler de içerir.
Bağımsız değişkenler
Not
Aşağıda belirtilen seçenekler, görevin en son sürümü için geçerlidir.
| Bağımsız Değişken | Description |
|---|---|
testRunner Test sonucu biçimi |
Istenir Yayınlamak istediğiniz sonuç dosyalarının biçimini belirtin. Aşağıdaki biçimler desteklenir: - - , junit, nunit 2, nunit 3, Visual Studio Test (TRX) ve xunit 2 Varsayılan değer: JUnit Bağımsız değişken diğer adı: testResultsFormat |
testResultsFiles Test sonuçları dosyaları |
Istenir Bir veya daha fazla test sonuçları dosyası belirtmek için bunu kullanın. -Tek klasörbir joker karakter ( * ) ve özyinelemeli joker karakterler () kullanabilirsiniz ** . Örneğin, **/TEST-*.xml adları tüm alt dizinlerde başlayan tüm XML dosyalarını arar TEST- . VSTest öğesini test sonucu biçimi olarak kullanıyorsanız, dosya türü örnek olarak değiştirilmelidir .trx . **/TEST-*.trx -Bir yeni satır ile ayrılmış birden çok yol belirtilebilir. -Ek olarak minimatch desenleride kabul eder. Örneğin,, !TEST[1-3].xml veya adlı dosyaları TEST1.xml dışlar TEST2.xmlTEST3.xml . Varsayılan değer: **/TEST-*.xml |
searchFolderArama klasörü |
Seçim Test sonucu dosyalarını aramak için klasörü. Varsayılan değer: $(System.DefaultWorkingDirectory) |
mergeTestResultsTest sonuçlarını Birleştir |
Bu seçenek belirlendiğinde, tüm dosyaların test sonuçları tek bir test çalıştırmasınagöre bildirilir. Bu seçenek seçilmezse, her test sonuç dosyası için ayrı bir test çalıştırması oluşturulur. Note: sonuçları eşlemenin ve sürenin doğru hesaplandığından emin olmak için aynı test çerçevesinden dosyaları birleştirmek için birleştirme testi sonuçlarını kullanın. Varsayılan değer: false |
failTaskOnFailedTestsTest hatası varsa başarısız olur |
Seçim Seçildiğinde, sonuçlar dosyasındaki testlerin herhangi biri başarısız olarak işaretlenmişse görev başarısız olur. Varsayılan değer false 'dur, bu da sonuçları sonuçlar dosyasından yayımlayacaktır. Varsayılan değer: false |
testRunTitleTest çalıştırması başlığı |
Seçim Sonuçların bildirildiği test çalıştırması için bir ad sağlamak üzere bu seçeneği kullanın. Derleme veya sürüm ardışık düzeninde belirtilen değişken adları kullanılabilir. |
platformDerleme platformu |
Seçim Test çalıştırmasının bildirilmesi gereken yapı platformu. Örneğin x64 veya x86 olabilir. Yapı görevinde platform için bir değişken tanımladıysanız, bunu burada kullanın. Bağımsız değişken diğer adı: buildPlatform |
configurationDerleme Yapılandırması |
Test çalıştırmasının bildirilmesi gereken yapı yapılandırması. Örneğin, Hata Ayıkla veya Yayınla. Yapı görevinde yapılandırma için bir değişken tanımladıysanız, burada kullanın. Bağımsız değişken diğer adı: buildConfiguration |
publishRunAttachmentstest sonuçları dosyalarını Upload |
Seçim Seçildiğinde, görev tüm test sonuç dosyalarını test çalıştırmasına ekler olarak yükler. Varsayılan değer: true |
Sonuç biçimleri eşleme
Bu tablo, bir derleme veya yayın özetinde testler sekmesinde raporlanan alanları ve desteklenen test sonucu biçimlerindeki özniteliklerle karşılık gelen eşlemeyi listeler.
| Kapsam | Alan | Visual Studio Test (TRX) |
|---|---|---|
| Test çalıştırması | Başlık | Görevde belirtilen test çalıştırması başlığı |
| Başlangıç tarihi | /TestRun/Times.exe ["Başlangıç"]. Deeri | |
| Tamamlanma tarihi | /TestRun/Times.exe ["bitiş"]. Deeri | |
| Süre | Tamamlanma tarihi-başlangıç tarihi | |
| Ekler | Aşağıdaki ek destek bölümüne bakın | |
| Test sonucu | Başlık | /TestRun/results/unittestresult.exe ["TestName"]. Value veya/TestRun/Results/WebTestResult.Attributes ["TestName"]. Value veya/TestRun/results/TestResultAggregation.exe ["TestName"]. Deeri |
| Başlangıç tarihi | /TestRun/results/unittestresult.exe ["StartTime"]. Value veya/TestRun/Results/WebTestResult.Attributes ["StartTime"]. Value veya/TestRun/results/TestResultAggregation.exe ["StartTime"]. Deeri | |
| Tamamlanma tarihi | /TestRun/results/unittestresult.exe ["StartTime"]. Değer +/TestRun/results/unittestresult.exe ["Duration"]. Value veya/TestRun/Results/WebTestResult.Attributes ["StartTime"]. Değer +/TestRun/Results/WebTestResult.Attributes ["Duration"]. Value veya/TestRun/results/TestResultAggregation.exe ["StartTime"]. Değer +/TestRun/results/TestResultAggregation.exe ["Duration"]. Deeri | |
| Süre1 | /TestRun/results/unittestresult.exe ["Duration"]. Value veya/TestRun/Results/WebTestResult.Attributes ["Duration"]. Value veya/TestRun/results/TestResultAggregation.exe ["Duration"]. Deeri | |
| Sahip | /TestRun/testdefinitions/UnitTest/Owners/Owner.exe ["Name"]. Deeri | |
| Sonuç | /TestRun/results/unittestresult.exe ["Outcome"]. Value veya/TestRun/Results/WebTestResult.Attributes ["Outcome"]. Value veya/TestRun/results/TestResultAggregation.exe ["Outcome"]. Deeri | |
| 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 ek destek bölümüne bakın | |
| Konsol günlüğü | /TestRun/Results/UnitTestResult/Output/stdout. InnerText veya/TestRun/results/WebTestResultOutput/output/stdout. InnerText veya/TestRun/Results/TestResultAggregation/Output/stdout. InnerText | |
| Konsol hata günlüğü | /TestRun/Results/UnitTestResult/Output/stderr. InnerText veya/TestRun/results/WebTestResultOutput/output/stderr. InnerText veya/TestRun/Results/TestResultAggregation/Output/stderr. InnerText | |
| Aracı adı | /TestRun/Results/UnitTestResult.Attributes ["computerName"]. Value veya/TestRun/Results/WebTestResult.Attributes ["computerName"]. Value veya/TestRun/Results/TestResultAggregation.Attributes ["computerName"]. Deeri | |
| Test dosyası | /TestRun/testdefinitions/UnitTest,Attributes ["depolama"]. Deeri | |
| Öncelik | /TestRun/testdefinitions/UnitTest.exe ["Priority"]. Deeri |
1süre yalnızca Başlangıç tarihi ve tamamlanma tarihi kullanılabilir olmadığında kullanılır.
2 tam ad biçimi, Namespace. TestClass. MethodName , 512 karakter sınırı ile. Test veri odaklı ve parametrelere sahipse, karakter sınırı parametreleri içerir.
Docker
Docker tabanlı uygulamalar için uygulamanızı derlemek ve testleri çalıştırmak için birçok yol vardır:
- Yapı ardışık düzeninde derleme ve test etme: işlem hattındaki derleme ve testler yürütme ve test sonuçları yayımla test sonuçları görevi kullanılarak yayımlanır.
- Çok aşamalı Dockerfile ile derleyin ve test edin: derleme ve testler, çok aşamalı bir Docker dosyası kullanarak kapsayıcının içinde yürütülür, çünkü bu test sonuçları ardışık düzene geri yayımlanmaz.
- Dockerfile ile sonuçları derleyin, test edin ve yayımlayın: derleme ve testler kapsayıcı içinde yürütülür ve sonuçlar işlem hattına geri yayımlanır. Aşağıdaki örneğe bakın.
Docker dosyası ile sonuçları derleyin, test edin ve yayımlayın
Bu yaklaşımda kodunuzu derler ve bir Docker dosyası kullanarak kapsayıcı içinde testler çalıştırırsınız. Test sonuçları daha sonra işlem hattına yayımlanacak konağa kopyalanır. test sonuçlarını Azure Pipelines yayımlamak için, Test Sonuçları yayımla görevini kullanabilirsiniz. Son görüntü Docker veya Azure Container Registry yayımlanacak
Kodu alma
Dockerfile.buildAşağıdaki ile proje dizininizin kökünde bir 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.dllBu dosya, kod oluşturma ve Testleri çalıştırma yönergelerini içerir. Testler daha sonra kapsayıcının içindeki bir dosyaya kopyalanır
testresults.trx.Yalnızca çalışma zamanı ve dağıtım yapıtları içeren son görüntüyü mümkün olduğunca küçük hale getirmek için, var olan içeriğini
Dockerfileaşağıdakiler ile 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
Bir Docker Hub hesabınız varsa ve görüntüyü Docker Kayıt defterinize göndermek istiyorsanız,
.vsts-ci.docker.ymldosyanın içeriğini aşağıdakiler ile 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ırsanız ve görüntüyü bu kayıt defterine göndermek istiyorsanız,
.vsts-ci.ymldosyanın içeriğini aşağıdaki kodla 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 içindeki kayıt defteri ayarlarının erişim tuşları 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ğıdakiler ile güncelleştirin
- Aracı havuzu:
- Dockerıd: değeri DockerHub Için DOCKER ıd veya Azure Container Registry için Yönetici Kullanıcı adı olarak ayarlayın.
- Dockerpassword: değeri DockerHub için parolanızı veya Azure Container Registry yönetici parolasını ayarlayın.
- YAML dosya yolu:
- Aracı havuzu:
Yeni bir derlemeyi kuyruğa alın ve bir Docker görüntüsünü oluşturup kayıt defterinize ve test sonuçlarına Azure DevOps.
YAML derlemeleri TFS 'de henüz kullanılabilir değil.
Ekler desteği
Test Sonuçları Yayımla görevi, aşağıdaki biçimler için Test çalıştırmasının ve test sonuçlarının ekleri için destek sağlar. Ortak projeler için 2 GB toplam ek destekliyoruz.
Visual Studio Test (TRX)
| Kapsam | Tür | Yol |
|---|---|---|
| Test çalıştırması | Veri toplayıcısı | /TestRun/resultsummary/CollectorDataEntries/Collector/uriattachments/uriattachment/a.exe ["href"]. Deeri |
| Test sonucu | /TestRun/resultsummary/ResultFiles/resultfile5attributes ["Path"]. Deeri | |
| Kod Kapsamı | /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes ["Binaryfile"]. Value ve/TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes ["Pdbdosya"]. Deeri | |
| Test sonucu | Veri toplayıcılar | /TestRun/results/unittestresult/CollectorDataEntries/Collector/uriattachments/uriattachment/a.exe ["href"]. Value veya/TestRun/Results/WebTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes ["href"]. Değer veya/TestRun/results/TestResultAggregation/CollectorDataEntries/Collector/uriattachments/uriattachment/a.exe ["href"]. Deeri |
| Test sonucu | /TestRun/results/unittestresult/ResultFiles/resultfile.exe ["Path"]. Value veya/TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes ["Path"]. Değer veya/TestRun/results/TestResultAggregation/ResultFiles/resultfile.exe ["Path"]. Deeri |
NUnit 3
| Kapsam | Yol |
|---|---|
| Test çalıştırması | /test-suite/attachments/attachment/filePath |
| Test çalıştırması | /test-suite[@type='Assembly']/test-case/attachments/attachment/filePath |
Not
Test sonuçları dosyasını ek olarak karşıya yükleme seçeneği, görevde tüm biçimler için geçerli olan varsayılan bir seçenektir.
İlişkili görevler
SSS
FQN'nin izin verilen maksimum sınırı nedir?
Maksimum FQN sınırı 512 karakterdir.
FQN Karakter sınırı, veri odaklı testlerde özellikleri ve bunların değerlerini de içerir mi?
Evet, FQN karakter sınırı özellikleri ve değerlerini içerir.
Alt sonuçlar için FQN farklı olacak mı?
Şu anda, veri odaklı testlerden alt sonuçlar karşılık gelen verilerde gösterlanmaz.
Örnek: Bir Test örneğim var: Sepete ürün ekleme Veri 1: Ürün = Veri 2: Product = Foot foot dipnot
Yayımlanan tüm test alt sonuçları yalnızca test çalışma adı ve ilk satırın verilerine sahip olur.
Açık kaynak
Bu görev, üzerinde açık kaynak GitHub. Geri bildirim ve katkılar açıktır.
Yardım ve destek
- Sorun giderme sayfamıza bakın
- ile ilgili öneriler Stack Overflowve Geliştirici Hesabı aracılığıyla destek Community