Raporty testowe

Każda opcja raportu wymaga pakietu rozszerzeń wymienionego w odpowiedniej sekcji. Dodaj pakiet bezpośrednio lub użyj konfiguracji lub profilu zestawu SDK testów, który go zawiera. Rozszerzenia raportów nie należą do rdzenia MTP, więc opcja taka jak --report-trx nie jest rozpoznawana, gdy aplikacja testowa nie zarejestruje swojego rozszerzenia. Uruchom aplikację testową za pomocą --help lub uruchom dotnet test --help w trybie MTP, aby potwierdzić, że opcja jest dostępna.

Wskazówka

W przypadku korzystania z Microsoft.Testing.Platform.MSBuild (dołączonego tranzytywnie przez narzędzia uruchomieniowe MSTest, NUnit i xUnit), te rozszerzenia są automatycznie rejestrowane podczas instalowania pakietów NuGet — bez konieczności wprowadzania zmian w kodzie. Rejestracja ręczna określona w tym artykule jest wymagana tylko w przypadku wyłączenia automatycznie wygenerowanego punktu wejścia przez ustawienie<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Nazwy plików raportu

Każde rozszerzenie raportowania zapisuje swój plik w katalogu wyników testów, który można określić za pomocą opcji --results-directory. Aby zastąpić nazwę, użyj odpowiedniej --report-*-filename opcji. Każda sekcja raportu zawiera domyślną nazwę tego raportu.

Nazwa pliku może zawierać ścieżkę względną, która pozostaje w katalogu wyników testów, i może użyć następujących elementów zastępczych (symboli zastępczych):

Placeholder Opis
{asm} Nazwa zestawu wpisu lub unknown gdy jest niedostępna.
{tfm} Identyfikator platformy docelowej wykryty w czasie wykonywania, na przykład net9.0.
{arch} Architektura procesu, taka jak x64, x86lub arm64.
{pname} Nazwa procesu.
{pid} Identyfikator procesu.
{time} Sygnatura czasowa o wysokiej precyzji.

Na przykład --report-trx-filename "{asm}_{tfm}_{arch}.trx" odtwarza domyślną nazwę TRX.

Jeśli dla źródła testowego istnieje już domyślna lub jawna nazwa pliku TRX, HTML lub JUnit, rozszerzenie ostrzega i zastępuje plik. Począwszy od wersji zapoznawczej MTP 2.4, funkcja CTRF używa tego samego zachowania. Aby zachować historię raportów, uwzględnij wartość {time}.

Uwaga / Notatka

W nazwach symboli zastępczych wielkość liter ma znaczenie i są one zapisywane małymi literami. Obsługa symboli zastępczych dla nazw plików raportu jest dostępna w MTP, począwszy od wersji 2.3.0.

Konsolidacja raportów

Od wersji MTP 2.4.0 MTP automatycznie dodatkowo przetwarza artefakty raportu po uruchomieniu dotnet test, które uruchamia wiele modułów testowych, lub gdy mechanizm ponawiania wykonuje wiele prób. Funkcja jest eksperymentalna w MTP 2.4.0.

Rozszerzenia TRX, JUnit, CTRF i HTML grupują zgodne artefakty według rodzaju raportu i zapisują skonsolidowany raport w podkatalogu merged katalogu wyników testów. Konsolidacja CTRF łączy wyniki modułów i scala ponowione próby w końcowy wynik testu wraz z historią ponowień. Konsolidacja HTML tworzy scalone podsumowanie i zachowuje oryginalne raporty dla poszczególnych procesów.

W przypadku niestandardowych rozszerzeń raportów eksperymentalny IArtifactPostProcessor interfejs API uwidacznia oddzielne TestModules i RetryAttempts tryby przetwarzania. Aby uzyskać więcej informacji, zobacz RozszerzeniaIArtifactPostProcessor.

Visual Studio raporty testowe (TRX)

Plik wyników testu Visual Studio (lub TRX) jest domyślnym formatem publikowania wyników testu. To rozszerzenie wymaga pakietu NuGet Microsoft.Testing.Extensions.TrxReport .

Rejestracja ręczna

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddTrxReportProvider();

Uwaga / Notatka

W przypadku korzystania z rejestracji ręcznej zarejestruj dostawcę raportów TRX na końcu. Bieżąca implementacja zależy od kolejności rejestracji, dlatego zarejestrowanie jej po wszystkich innych rozszerzeniach gwarantuje, że przechwytuje wszystkie dane testowe.

Uwaga / Notatka

Dostępny w MTP począwszy od wersji 1.9.0 raport TRX zawiera pole testowe Description .

Uwaga / Notatka

Począwszy od wersji 2.3.0 w MTP wyniki TRX są strumieniowo zapisywane na dysku w miarę postępu uruchomienia. Jeśli host testowy ulegnie awarii, plik TRX przechowuje wyniki zebrane przed awarią.

Począwszy od podglądowej wersji MTP 2.4, plik TRX wygenerowany przez MTP zachowuje metadane MSTest [WorkItem] i [GitHubWorkItem].

Opcje

Option Opis
--report-trx Generuje raport TRX.
--report-trx-filename Nazwa wygenerowanego raportu TRX. Począwszy od MTP 2.3.0, wartością domyślną jest formularz deterministyczny {asm}_{tfm}_{arch}.trx ; przed MTP 2.3.0 wartość domyślna to <UserName>_<MachineName>_<yyyy-MM-dd_HH_mm_ss.fffffff>.trx. Aby dostosować nazwę, zobacz Nazwy plików raportów.

Raport jest zapisywany w domyślnym folderze TestResults, który można określić za pomocą argumentu wiersza polecenia --results-directory.

Raporty HTML

Raport HTML tworzy interaktywny, samodzielny plik HTML na potrzeby sesji testowej. To rozszerzenie wymaga pakietu NuGet Microsoft.Testing.Extensions.HtmlReport.

Uwaga / Notatka

Dostępne w MTP począwszy od wersji 2.3.0. To rozszerzenie jest eksperymentalne, a jego opcje i format danych wyjściowych mogą ulec zmianie w przyszłej wersji.

Rejestracja ręczna

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddHtmlReportProvider();

Opcje

Option Opis
--report-html Generuje raport HTML.
--report-html-filename Nazwa wygenerowanego raportu HTML. Wartość musi kończyć się na .html. Wartość domyślna to {asm}_{tfm}_{arch}.html. Aby dostosować nazwę, zobacz Nazwy plików raportów. Wymaga --report-html.

Raporty JUnit

Raport JUnit tworzy plik XML zgodny ze standardem JUnit na potrzeby sesji testowej. To rozszerzenie wymaga Microsoft. Testing.Extensions.JUnitReport NuGet package.

Uwaga / Notatka

Dostępne w MTP począwszy od wersji 2.3.0. To rozszerzenie jest eksperymentalne, a jego opcje i format danych wyjściowych mogą ulec zmianie w przyszłej wersji.

Począwszy od zestawu MSTest.Sdk 4.3, włącz to rozszerzenie za pomocą polecenia <EnableMicrosoftTestingExtensionsJUnitReport>true</EnableMicrosoftTestingExtensionsJUnitReport>. Rozszerzenie nie jest częścią profilów Default ani AllMicrosoft MSTest.Sdk.

Rejestracja ręczna

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddJUnitReportProvider();

Opcje

Option Opis
--report-junit Generuje raport XML JUnit.
--report-junit-filename Nazwa wygenerowanego raportu XML JUnit. Wartość musi kończyć się na .xml. Wartość domyślna to {asm}_{tfm}_{arch}.xml. Aby dostosować nazwę, zobacz Nazwy plików raportów. Wymaga --report-junit.

Raporty CTRF

Raport CTRF tworzy plik JSON, który używa formatu Common Test Report Format na potrzeby sesji testowej. To rozszerzenie wymaga Microsoft. Testing.Extensions.CtrfReport NuGet package.

Uwaga / Notatka

Dostępne w MTP począwszy od wersji 2.3.0. To rozszerzenie jest eksperymentalne, a jego opcje i format danych wyjściowych mogą ulec zmianie w przyszłej wersji.

Rejestracja ręczna

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddCtrfReportProvider();

Opcje

Option Opis
--report-ctrf Generuje raport JSON CTRF.
--report-ctrf-filename Nazwa wygenerowanego raportu JSON CTRF. Wartość musi kończyć się na .json. Wartość domyślna to <UserName>_<MachineName>_<assembly>_<tfm>_<timestamp>.ctrf.json. Aby dostosować nazwę, zobacz Nazwy plików raportów. Wymaga --report-ctrf.

Począwszy od wersji zapoznawczej MTP 2.4, CTRF zachowuje każdy wynik, gdy wiele testów używa tego samego identyfikatora UID. Zawiera również załączniki dla poszczególnych testów i poprzednich prób oraz określa ich typy MIME na podstawie nazw plików.

W przypadku ponownych testów funkcja CTRF koreluje próby tylko wtedy, gdy relacja jest jednoznaczna. Następnie rejestruje wcześniejsze próby w retryAttempts, ustawia retriesi oznacza później pomyślny wynik jako flaky: true. Niejednoznaczne wyniki tego samego identyfikatora UID pozostają oddzielne, więc raport nie kojarzy diagnostyki z niewłaściwym testem.

Podsumowanie terminalu identyfikuje niestabilne i ponawiane testy. Raporty TRX i JUnit zachowują jeden wynik końcowy na test zamiast rejestrować każdą próbę.

raporty Azure DevOps

Azure DevOps wtyczka raportów rozszerza uruchamianie testów dla deweloperów, którzy hostują swój kod na GitHub, ale bazują na agentach kompilacji Azure DevOps. Dodaje dodatkowe informacje do niepowodzeń, aby pokazać błąd bezpośrednio w GitHub pull request.

Adnotacja błędów w widoku plików pull requesta w GitHub

To rozszerzenie wymaga pakietu NuGet Microsoft.Testing.Extensions.AzureDevOpsReport .

Rejestracja ręczna

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHost.AddAzureDevOpsProvider();

Opcje

Option Wersja MTP Opis
--report-azdo 1.9.0 Włącza generator raportów Azure DevOps. Błędy i ostrzeżenia są zapisywane w danych wyjściowych w formacie, który Azure DevOps rozumie.
--report-azdo-severity 1.9.0 Poziom ważności używany dla zgłoszonych zdarzeń. Prawidłowe wartości to error (wartość domyślna) i warning.
--report-azdo-groups 2.4.0 Włącza lub wyłącza grupy dzienników dla poszczególnych zestawów. Po włączeniu dane wyjściowe każdego zestawu testowego są wyświetlane w zwijanej sekcji dziennika Azure Pipelines. Prawidłowe wartości to on i off. Kompilacje wersji zapoznawczej MTP 2.4.0 domyślnie używają on; stabilne wydanie MTP 2.4.0 domyślnie używa off. Wymaga --report-azdo.
--report-azdo-annotations 2.4.0 Włącza lub wyłącza adnotacje dla nieudanych i pominiętych testów. Prawidłowe wartości to on (wartość domyślna) i off. Wymaga --report-azdo.
--report-azdo-flaky-history 2.3.0 Wyszukuje historię wyników testów w Azure DevOps z ostatnich N dni (1–90) i opatruje zgłoszone niepowodzenia kontekstem niestabilności testów. Wymaga --report-azdo.
--report-azdo-demote-known-flaky 2.3.0 Obniża liczbę błędów, które są wystarczająco niestabilne w oknie historii Azure DevOps (domyślny próg to 25%) z błędów do ostrzeżeń. Wymaga --report-azdo i --report-azdo-flaky-history.
--report-azdo-quarantine-file 2.3.0 Ścieżka do pliku tekstowego zawierającego listę w pełni kwalifikowanych nazw lub wzorców globu testowanych w kwarantannie. Niepowodzenia dopasowania są zgłaszane jako ostrzeżenia. Wymaga --report-azdo.
--report-azdo-summary 2.3.0 Zapisuje podsumowanie zadania w formacie Markdown na końcu testu i przesyła je za pomocą ##vso[task.uploadsummary]. Opcjonalny argument ścieżki pliku zastępuje domyślną lokalizację ({testResultsDir}/azdo-summary-{tfm}.md). Wymaga --report-azdo.
--report-azdo-stackframe-filter 2.3.0 Dodaje wzorce wyrażeń regularnych dopasowywane względem w pełni kwalifikowanego prefiksu typu każdej ramki stosu, które są pomijane, gdy rozszerzenie lokalizuje miejsce wywołania użytkownika, które ma zostać opatrzone adnotacją. Opcja jest powtarzalna, maksymalnie 16 wzorców, a każdy wzorzec jest kompilowany z limitem czasu dopasowania 500 ms. Te wzorce stanowią uzupełnienie prefiksów implementacji asercji MSTest wbudowanych w rozszerzenie. Wymaga --report-azdo.
--report-azdo-upload-artifacts 2.3.0 Przekazuje pliki wyników testów i/lub dodaje tagi kompilacji do Azure DevOps. Prawidłowe wartości to off (wartość domyślna), tags-only, filesi all.
--report-azdo-upload-artifact-include 2.3.0 Uwzględnia pliki podczas przekazywania artefaktów do usługi Azure DevOps za pomocą wzorców glob względem katalogu wyników testów. Wartość domyślna to **/*. Wymaga, aby --report-azdo-upload-artifacts miało wartość inną niż off.
--report-azdo-upload-artifact-exclude 2.3.0 Wyklucza pliki z przekazywania artefaktów Azure DevOps przy użyciu wzorców globu względem katalogu wyników testów. Wymaga, aby --report-azdo-upload-artifacts miało wartość inną niż off.
--report-azdo-upload-artifact-name 2.3.0 Nadpisuje nazwę kontenera artefaktów w usłudze Azure DevOps. Wartość domyślna to TestResults_{assemblyName}_{tfm}. Wymaga, aby --report-azdo-upload-artifacts miało wartość inną niż off.
--publish-azdo-test-results 2.3.0 Przesyła wyniki strumieniowo do przebiegu testowego w Azure DevOps w miarę kończenia się testów. Karta Testy kompilacji wyświetla ukończone uruchomienie.
--publish-azdo-run-name 2.3.0 Ustawia niestandardową nazwę przebiegu testu Azure DevOps na potrzeby publikowania wyników testów na żywo. Wymaga --publish-azdo-test-results.

Warning

Nie włączaj grup, gdy wiele zestawów testowych jest uruchamianych równolegle. Azure DevOps ##[group] i ##[endgroup] polecenia formatowania są sekwencyjne i anonimowe. Współbieżne dane wyjściowe kompilacji mogą się przeplatać, powodować nieprawidłowe zagnieżdżenie grup i umieszczać wiersze pod niewłaściwą kompilacją. Jeśli używasz kompilacji MTP 2.4.0 w wersji zapoznawczej, przekaż polecenie --report-azdo-groups off , aby wyłączyć grupy. Stabilna wersja MTP 2.4.0 domyślnie wyłącza grupy. Przekazuj --report-azdo-groups on tylko dla pojedynczej asemblacji lub sekwencyjnego wykonywania asemblacji.

Uwaga / Notatka

W kolumnie wersja MTP jest wyświetlana pierwsza wersja MTP zawierająca każdą opcję. Samo rozszerzenie Azure DevOps stało się stabilne w MTP 1.9.0 z --report-azdo i --report-azdo-severity; pozostałe opcje zostały dodane w MTP 2.3.0 lub 2.4.0.

Rozszerzenie automatycznie wykrywa, że działa w środowisku ciągłej integracji( CI), sprawdzając zmienną TF_BUILD środowiskową.

Od wersji MTP 2.4.0 podsumowania Markdown w Azure DevOps agregują wyniki ze wszystkich modułów testowych w wywołaniu dotnet test. Po włączeniu pokrycia kodu podsumowanie zawiera uwzględnione i łączne liczby, wartości procentowe, wyniki progowe i wskaźnik, gdy dane pokrycia są częściowe.

W wersji zapoznawczej MTP 2.4 publikowanie na bieżąco automatycznie przesyła załączniki plików dla nieudanych wyników do wyników testów w usłudze Azure DevOps. Wyniki zakończone niepowodzeniem obejmują niepowodzenie, błędy, przekroczenie limitu czasu i anulowane wyniki.

Gdy wynik dostarcza standardowe dane wyjściowe lub standardowy błąd, rozszerzenie może dołączyć do 256 KiB każdego strumienia wbudowanego. Każdy załącznik oparty na pliku ma limit 16 MiB.

Rozszerzenie przesyła również pliki na poziomie uruchomienia .coverage, .cobertura.xml i .opencover.xml jako załączniki pokrycia kodu. Te załączniki przebiegu testów i wyników są niezależne od --report-azdo-upload-artifacts, który przesyła wybrane pliki jako artefakty kompilacji w Azure Pipelines.

W przypadku ponownych testów Azure DevOps publikuje wcześniejsze próby jako podwyrażenia i dołącza artefakty każdej próby do podresultu, który je wygenerował. Jeśli korelacja bezpiecznego ponawiania prób jest niedostępna, rozszerzenie publikuje oddzielny wynik zamiast usuwać go.

Gdy publikowanie na żywo utworzy przebieg, zostanie wyświetlony adres URL przebiegu, dzięki czemu będzie można śledzić wyniki przed jego zakończeniem. Wysyła również pipelineReference i datę rozpoczęcia, gdy środowisko potoku je udostępnia. Na karcie Testy kompilacji nie jest wyświetlany trwający przebieg; jest on wyświetlany dopiero po zakończeniu.

raporty GitHub Actions

Raport GitHub Actions emituje natywne polecenia przepływu pracy GitHub Actions, dzięki czemu uruchomienia testów zapewniają najwyższej jakości obsługę na runnerze: grupy dzienników dla każdego zestawu, adnotacje dotyczące nieudanych i pominiętych testów (widoczne na karcie Adnotacje przepływu pracy oraz — gdy można ustalić lokalizację w kodzie źródłowym — w widoku różnic na karcie Files changed żądania pull request), podsumowanie zadania w formacie Markdown dołączane do pliku wskazanego przez GITHUB_STEP_SUMMARY, a także powiadomienia o wolnych testach.

To rozszerzenie wymaga pakietu NuGet Microsoft.Testing.Extensions.GitHubActionsReport.

Rozszerzenie aktywuje się tylko wtedy, gdy uruchomienie odbywa się w GitHub Actions (zmienna środowiskowa GITHUB_ACTIONS ma wartość true) i ustawiono przełącznik --report-gh; w przeciwnym razie nie robi nic. Po aktywowaniu każda funkcja jest domyślnie włączona i można ją wyłączyć osobno za pomocą opcji --report-gh-*.

Ważna

Opcja --report-gh należy do Microsoft.Testing.Extensions.GitHubActionsReport. Pakiet GitHubActionsTestLogger udostępnia inną opcję: --report-github. Opcje nie są aliasami i działają tylko wtedy, gdy projekt testowy rejestruje pakiet, który jest właścicielem opcji.

Uwaga / Notatka

Rozszerzenie jest dostępne od MTP 2.3.0. Począwszy od MTP 2.4.0, jego publiczne punkty wejścia nie są już eksperymentalne.

Rejestracja ręczna

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddGitHubActionsProvider();

Opcje

Option Wersja MTP Opis
--report-gh 2.3.0 Włącza generator raportów dla GitHub Actions, dzięki czemu uruchomienia testów emitują polecenia przepływu pracy. Wymaga, aby uruchomienie odbywało się w GitHub Actions.
--report-gh-groups 2.3.0 Włącza lub wyłącza grupy dzienników dla poszczególnych zestawów. Prawidłowe wartości to on (wartość domyślna) i off. Wymaga --report-gh.
--report-gh-annotations 2.3.0 Włącza lub wyłącza adnotacje dla nieudanych i pominiętych testów. Prawidłowe wartości to on (wartość domyślna) i off. Wymaga --report-gh.
--report-gh-step-summary 2.3.0 Określa, czy rozszerzenie zapisuje podsumowanie zadania w formacie Markdown do pliku, do którego odwołuje się GITHUB_STEP_SUMMARY. Prawidłowe wartości to on (wartość domyślna), offi, począwszy od MTP 2.4.0, on-failure. Wymaga --report-gh.
--report-gh-step-summary-sections 2.4.0 Wybiera zawartość podsumowania. Prawidłowe wartości to test-results, , coverageslow-testsi all (wartość domyślna). Wymaga --report-gh oraz trybu podsumowania innego niż off.
--report-gh-failure-details 2.4.0 Włącza lub wyłącza ograniczone szczegóły błędów w podsumowaniu zadania. Użyj on (wartość domyślna) lub off. Szczegóły obejmują komunikat, typ wyjątku, lokalizację źródłową i ślad stosu, jeśli jest dostępny. Wymaga --report-gh.
--report-gh-history 2.4.0 Odczytuje i aktualizuje ograniczoną lokalną migawkę historii testów pod określoną ścieżką pliku. Przepływ pracy musi pobrać poprzednią migawkę przed uruchomieniem i przesłać zaktualizowany plik po jego zakończeniu. Wymaga --report-gh.
--report-gh-history-window 2.4.0 Ustawia okres przechowywania historii w zakresie od 1 do 90 dni. Wartość domyślna to 30 dni. Wymaga --report-gh-history.
--report-gh-slow-test-notices 2.3.0 Włącza lub wyłącza powiadomienia o powolnym teście. Prawidłowe wartości to on (wartość domyślna) i off. Wymaga --report-gh.
--report-gh-slow-test-threshold 2.3.0 Czas, przez jaki test może działać, zanim zostanie wyświetlone ostrzeżenie o wolnym teście. Akceptuje nagą liczbę sekund lub wartość z sufiksem jednostki, takim jak 90s, 2mlub 1.5h. Wartość domyślna to 60s. Wymaga --report-gh.

Od wersji MTP 2.4.0 podsumowania Markdown w GitHub Actions agregują wyniki ze wszystkich modułów testowych w ramach wywołania dotnet test. Po włączeniu również pokrycia kodu wybierz coverage lub all, aby uwzględnić liczbę elementów objętych pokryciem i ich łączną liczbę, wartości procentowe, wyniki względem progów oraz wskaźnik informujący, że dane pokrycia są częściowe.

Szczegóły błędu mieszczą się w przydzielonych limitach komunikatu, stosu, licznika błędów i całego podsumowania. Gdy treść przekracza limit, raport obcina ją lub skraca i odnotowuje to skrócenie w podsumowaniu.