Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Chaque option de rapport nécessite le package d’extension nommé dans sa section. Ajoutez directement le package, ou utilisez une configuration ou un profil de kit sdk de test qui l’inclut. Les extensions de rapport ne font pas partie du cœur MTP. Par conséquent, une option telle qu’elle --report-trx n’est pas reconnue lorsque l’application de test n’inscrit pas son extension. Exécutez l’application de test avec --help, ou exécutez dotnet test --help en mode MTP, pour vérifier qu’une option est disponible.
Conseil / Astuce
Lors de l’utilisation de Microsoft.Testing.Platform.MSBuild (inclus transitivement par MSTest, NUnit et xUnit Runners), ces extensions sont enregistrées automatiquement lorsque vous installez leurs packages NuGet, sans modification du code nécessaire. L’inscription manuelle spécifiée dans cet article n’est requise que si vous avez désactivé le point d’entrée généré automatiquement en définissant <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.
Noms de fichier du rapport
Chaque extension de rapport écrit son fichier dans le répertoire des résultats de test, que vous pouvez définir avec l’option --results-directory . Pour remplacer le nom, utilisez l’option correspondante --report-*-filename . Chaque section de rapport répertorie le nom par défaut de ce rapport.
Un nom de fichier peut inclure un chemin d’accès relatif qui reste dans le répertoire des résultats de test et peut utiliser les éléments de remplacement suivants (espaces réservés) :
| Texte de remplacement | Descriptif |
|---|---|
{asm} |
Nom de l’assembly d’entrée ou unknown lorsqu’il n’est pas disponible. |
{tfm} |
Identificateur du framework cible détecté à l’exécution, par exemple net9.0. |
{arch} |
Architecture de processus, telle que x64, x86ou arm64. |
{pname} |
Nom du processus. |
{pid} |
ID de processus. |
{time} |
Horodatage haute précision. |
Par exemple, --report-trx-filename "{asm}_{tfm}_{arch}.trx" reproduit le nom TRX par défaut.
Si un nom de fichier TRX, HTML ou JUnit par défaut ou explicite existe déjà pour une source de test, l’extension avertit et remplace le fichier. À compter de la préversion MTP 2.4, CTRF utilise le même comportement. Pour conserver l’historique des rapports, incluez {time}.
Note
Les noms des espaces réservés sont sensibles à la casse et s’écrivent en minuscules. La prise en charge des espaces réservés pour les noms de fichiers de rapport est disponible dans MTP à partir de la version 2.3.0.
Consolidation des rapports
À compter de MTP 2.4.0, MTP effectue automatiquement le post-traitement des artefacts de rapport après l’exécution d’une invocation dotnet test qui exécute plusieurs modules de test, ou après que la fonctionnalité de nouvelle tentative a effectué plusieurs tentatives. La fonctionnalité est expérimentale dans MTP 2.4.0.
Les extensions TRX, JUnit, CTRF et HTML regroupent les artefacts compatibles par type de rapport et écrivent un rapport consolidé dans le sous-répertoire merged du répertoire des résultats de test. La consolidation CTRF regroupe les résultats du module et intègre les tentatives de relance dans le résultat final du test avec l’historique des nouvelles tentatives. La consolidation HTML crée un résumé fusionné et conserve les rapports par processus d’origine.
Pour les extensions de rapport personnalisées, l’API expérimentale IArtifactPostProcessor expose des modes distincts TestModules et RetryAttempts de traitement. Pour plus d’informations, consultez Les IArtifactPostProcessor extensions.
rapports de test Visual Studio (TRX)
Le Visual Studio fichier de résultats de test (ou TRX) est le format par défaut pour la publication des résultats des tests. Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.TrxReport .
Inscription manuelle
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddTrxReportProvider();
Note
Lors de l’utilisation de l’inscription manuelle, inscrivez le fournisseur de rapports TRX en dernier. L’implémentation actuelle dépend de l’ordre d’inscription. Par conséquent, l’inscription après toutes les autres extensions garantit qu’elle capture toutes les données de test.
Note
Disponible dans MTP à partir de la version 1.9.0, le rapport TRX inclut le champ de test Description .
Note
Disponible dans MTP à partir de la version 2.3.0, les résultats TRX sont écrits sur le disque au fur et à mesure de l’exécution. Si l’hôte de test se bloque, le fichier TRX conserve les résultats collectés avant le blocage.
À partir de la préversion MTP 2.4, un TRX généré par MTP préserve les métadonnées MSTest [WorkItem] et [GitHubWorkItem].
Options
| Choix | Descriptif |
|---|---|
--report-trx |
Génère le rapport TRX. |
--report-trx-filename |
Nom du rapport TRX généré. À compter de MTP 2.3.0, la valeur par défaut est la forme déterministe {asm}_{tfm}_{arch}.trx ; avant MTP 2.3.0, la valeur par défaut était <UserName>_<MachineName>_<yyyy-MM-dd_HH_mm_ss.fffffff>.trx. Pour personnaliser le nom, consultez les noms des fichiers de rapport. |
Le rapport est enregistré dans le dossier TestResults par défaut qui peut être spécifié via l’argument --results-directory de ligne de commande.
Rapports HTML
Le rapport HTML crée un fichier HTML interactif autonome pour une session de test. Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.HtmlReport.
Note
Disponible dans MTP à compter de la version 2.3.0. Cette extension est expérimentale, et ses options et son format de sortie peuvent changer dans une version ultérieure.
Inscription manuelle
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddHtmlReportProvider();
Options
| Choix | Descriptif |
|---|---|
--report-html |
Génère le rapport HTML. |
--report-html-filename |
Nom du rapport HTML généré. La valeur doit se terminer par .html. La valeur par défaut est {asm}_{tfm}_{arch}.html. Pour personnaliser le nom, consultez les noms des fichiers de rapport. Exige --report-html. |
Rapports JUnit
Le rapport JUnit crée un fichier XML compatible JUnit pour une session de test. Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.JUnitReport.
Note
Disponible dans MTP à compter de la version 2.3.0. Cette extension est expérimentale, et ses options et son format de sortie peuvent changer dans une version ultérieure.
À compter de MSTest.Sdk 4.3, activez cette extension avec <EnableMicrosoftTestingExtensionsJUnitReport>true</EnableMicrosoftTestingExtensionsJUnitReport>. L’extension ne fait pas partie des DefaultAllMicrosoft profils MSTest.Sdk.
Inscription manuelle
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddJUnitReportProvider();
Options
| Choix | Descriptif |
|---|---|
--report-junit |
Génère le rapport XML JUnit. |
--report-junit-filename |
Nom du rapport XML JUnit généré. La valeur doit se terminer par .xml. La valeur par défaut est {asm}_{tfm}_{arch}.xml. Pour personnaliser le nom, consultez les noms des fichiers de rapport. Exige --report-junit. |
Rapports CTRF
Le rapport CTRF crée un fichier JSON qui utilise le format de rapport de test commun pour une session de test. Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.CtrfReport.
Note
Disponible dans MTP à compter de la version 2.3.0. Cette extension est expérimentale, et ses options et son format de sortie peuvent changer dans une version ultérieure.
Inscription manuelle
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddCtrfReportProvider();
Options
| Choix | Descriptif |
|---|---|
--report-ctrf |
Génère le rapport JSON CTRF. |
--report-ctrf-filename |
Nom du rapport JSON CTRF généré. La valeur doit se terminer par .json. La valeur par défaut est <UserName>_<MachineName>_<assembly>_<tfm>_<timestamp>.ctrf.json. Pour personnaliser le nom, consultez les noms des fichiers de rapport. Exige --report-ctrf. |
À compter de la préversion MTP 2.4, CTRF conserve tous les résultats lorsque plusieurs tests utilisent le même UID. Il inclut également les pièces jointes par test et les tentatives antérieures et déduit leurs types MIME à partir de noms de fichiers.
Pour les tests retentés, CTRF met en corrélation les tentatives uniquement lorsque la relation n’est pas ambiguë. Il enregistre ensuite les tentatives antérieures dans retryAttempts, définit retrieset marque un résultat ultérieur réussi comme flaky: true. Les résultats ambigus du même UID restent séparés afin que le rapport n’associe pas les diagnostics au test incorrect.
Le résumé du terminal indique les tests instables et relancés. Les rapports TRX et JUnit conservent un résultat final par test au lieu d’enregistrer chaque tentative.
rapports Azure DevOps
L’extension de rapport Azure DevOps intègre les exécutions de test MTP avec Azure Pipelines. Il met en forme les erreurs et les avertissements dans les journaux du pipeline, ajoute des annotations pour les tests en échec et ignorés, crée un résumé de tâche au format Markdown et peut regrouper la sortie par assembly de tests. L’extension peut également identifier les échecs instables ou mis en quarantaine, téléverser des artefacts de test et transmettre les résultats en continu à une session de test Azure DevOps.
Lorsque vous hébergez votre code sur GitHub mais que vous exécutez des tests sur des agents Azure Pipelines, les annotations d’échec peuvent apparaître directement dans la demande de tirage GitHub :
Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.AzureDevOpsReport .
Inscription manuelle
var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHost.AddAzureDevOpsProvider();
Options
| Choix | Version MTP | Descriptif |
|---|---|---|
--report-azdo |
1.9.0 | Active le générateur de rapports Azure DevOps. Les erreurs et les avertissements sont écrits dans la sortie dans un format que Azure DevOps comprend. |
--report-azdo-severity |
1.9.0 | Gravité à utiliser pour les événements signalés. Les valeurs valides sont error (par défaut) et warning. |
--report-azdo-groups |
2.4.0 | Active ou désactive les groupes de journalisation pour chaque assembly. Lorsqu’elle est activée, la sortie de chaque assembly de test s’affiche dans une section repliable du journal d’Azure Pipelines. Les valeurs valides sont on et off. La préversion MTP 2.4.0 est par défaut on; la version stable de MTP 2.4.0 est définie sur off. Exige --report-azdo. |
--report-azdo-annotations |
2.4.0 | Active ou désactive les annotations pour les tests en échec et ignorés. Les valeurs valides sont on (par défaut) et off. Exige --report-azdo. |
--report-azdo-flaky-history |
2.3.0 | Interroge l’historique des résultats de test d’Azure DevOps des N derniers jours (1 à 90) et annote les échecs signalés avec un contexte sur leur instabilité. Exige --report-azdo. |
--report-azdo-demote-known-flaky |
2.3.0 | Abaisse le statut d’erreur à celui d’avertissement les échecs suffisamment instables dans la fenêtre d’historique d’Azure DevOps (seuil par défaut à 25 %). Nécessite --report-azdo et --report-azdo-flaky-history. |
--report-azdo-slow-test-history |
2.3.0 | Interroge l’historique des résultats de test dans Azure DevOps sur le nombre de jours spécifié et abaisse le seuil « toujours en cours d’exécution » par test pour les tests dont la courte durée d’exécution est connue. Accepte exactement un entier compris entre 1 et 90. Avec suffisamment d’échantillons historiques, le seuil est inférieur à 60 secondes et la durée historique p99 multipliée par le multiplicateur configuré. Exige --report-azdo. |
--report-azdo-slow-test-history-min-sample |
2.3.0 | Définit le nombre minimal d’échantillons historiques requis avant que l’extension utilise l’historique d’un test pour ajuster son seuil de test lent ou ajouter des détails d’historique aux lignes de sortie de test lent. Accepte exactement un entier supérieur ou égal à 1. La valeur par défaut est de 10. Exige --report-azdo-slow-test-history. |
--report-azdo-slow-test-history-multiplier |
2.3.0 | Définit le multiplicateur appliqué à la durée historique d’un test p99 pour calculer son seuil de test lent. Accepte exactement une valeur en virgule flottante utilisant la culture invariante, supérieure à 0 et au plus égale à 10 000. La valeur par défaut est 3. Exige --report-azdo-slow-test-history. |
--report-azdo-quarantine-file |
2.3.0 | Chemin d’accès à un fichier texte qui répertorie les noms complets de test mis en quarantaine ou les modèles glob. Les échecs correspondants sont signalés comme avertissements. Exige --report-azdo. |
--report-azdo-summary |
2.3.0 | Écrit un résumé de travail Markdown à la fin de l’exécution du test et le charge via ##vso[task.uploadsummary]. Un argument de chemin d’accès de fichier facultatif remplace l’emplacement par défaut ({testResultsDir}/azdo-summary-{assembly}-{tfm}-{arch}.md). Exige --report-azdo. |
--report-azdo-stackframe-filter |
2.3.0 | Ajoute des modèles regex, mis en correspondance avec le préfixe de type complet de chaque trame de pile, qui sont ignorés lorsque l’extension localise le site d’appel de l’utilisateur pour annoter. L’option peut être répétée jusqu’à 16 motifs, et chaque motif est compilé avec un délai d’expiration pour la correspondance de 500 ms. Ces motifs s’ajoutent aux préfixes intégrés à l’extension pour l’implémentation des assertions MSTest. Exige --report-azdo. |
--report-azdo-upload-artifacts |
2.3.0 | Charge les fichiers de résultats de test et/ou ajoute des balises de build à Azure DevOps. Les valeurs valides sont off (par défaut), tags-only, fileset all. |
--report-azdo-upload-artifact-include |
2.3.0 | Inclut des fichiers dans le chargement d’artefacts Azure DevOps à l’aide de modèles glob par rapport au répertoire des résultats des tests. La valeur par défaut est **/*. Doit --report-azdo-upload-artifacts être une valeur autre que off. |
--report-azdo-upload-artifact-exclude |
2.3.0 | Exclut des fichiers du chargement d’artefacts Azure DevOps à l’aide de modèles glob par rapport au répertoire des résultats des tests. Doit --report-azdo-upload-artifacts être une valeur autre que off. |
--report-azdo-upload-artifact-name |
2.3.0 | Remplace le nom du conteneur d’artefacts Azure DevOps. La valeur par défaut est TestResults_{assemblyName}_{tfm}. Doit --report-azdo-upload-artifacts être une valeur autre que off. |
--publish-azdo-test-results |
2.3.0 | Diffuse les résultats vers une exécution de test Azure DevOps à mesure que les tests se terminent. L’onglet Tests de la build répertorie l’exécution terminée. |
--publish-azdo-run-name |
2.3.0 | Définit un nom d’exécution de test Azure DevOps personnalisé pour la publication de résultats de test en direct. Exige --publish-azdo-test-results. |
Warning
N’activez pas les groupes lorsque plusieurs assemblys de test s’exécutent en parallèle.
##[group] Azure DevOps et ##[endgroup] les commandes de mise en forme sont séquentielles et anonymes. La sortie simultanée de fichiers d'assembly peut entraîner un entrelacement des données, provoquer un imbriquage incorrect des groupes et attribuer des lignes au mauvais fichier d'assembly. Si vous utilisez une version préliminaire de MTP 2.4.0, passez --report-azdo-groups off pour désactiver les groupes. La version stable de MTP 2.4.0 désactive les groupes par défaut. Passez --report-azdo-groups on uniquement pour un seul assembly ou une exécution sérialisée d’un assembly.
Note
La colonne de version MTP répertorie la première version MTP qui contient chaque option. L’extension Azure DevOps elle-même est devenue stable dans MTP 1.9.0 et --report-azdo--report-azdo-severity; les options restantes ont été ajoutées dans MTP 2.3.0 ou 2.4.0.
L’extension détecte automatiquement qu’elle s’exécute dans un environnement d’intégration continue (CI) en vérifiant la variable d’environnement TF_BUILD .
Important
Les requêtes d’historique Azure DevOps nécessitent TF_BUILD=true, SYSTEM_TEAMPROJECT, SYSTEM_COLLECTIONURI, SYSTEM_ACCESSTOKEN et BUILD_DEFINITIONID. Si une valeur est manquante, MTP continue sans données d’historique, ignore les annotations flaky-history et utilise le seuil statique de 60 secondes pour les lignes de test lentes.
La publication en direct avec --publish-azdo-test-results nécessite TF_BUILD=true, SYSTEM_COLLECTIONURI, SYSTEM_TEAMPROJECT, SYSTEM_ACCESSTOKEN et BUILD_BUILDID. Si une valeur est manquante ou non valide, MTP avertit et ne publie pas l’exécution de test.
À partir de MTP 2.4.0, les résumés Markdown Azure DevOps agrègent les résultats de tous les modules de test lors d’une invocation dotnet test. Lorsque vous activez également la couverture du code, le résumé inclut les nombres couverts et totaux, les pourcentages, les résultats de seuil et un indicateur lorsque les données de couverture sont partielles.
Dans la préversion MTP 2.4, la publication en direct télécharge automatiquement les pièces jointes pour les résultats ayant échoué dans les résultats de test d’Azure DevOps. Les résultats non réussis incluent l’échec, l’erreur, le délai d’attente et les résultats annulés.
Lorsqu’un résultat fournit une sortie standard ou une erreur standard, l’extension peut attacher jusqu’à 256 Kio de chaque flux inline. Chaque pièce jointe sauvegardée par fichier a une limite de 16 Mio.
L’extension télécharge également les fichiers au niveau de l’exécution .coverage, .cobertura.xml et .opencover.xml en tant que pièces jointes de couverture du code. Ces pièces jointes d’exécution de test et de résultat sont distinctes de --report-azdo-upload-artifacts, qui téléverse les fichiers sélectionnés en tant qu’artefacts de génération Azure Pipelines.
Pour les tests retentés, Azure DevOps publie les tentatives antérieures sous forme de sous-résultats et attache les artefacts de chaque tentative au sous-résultat qui les a produites. Si la corrélation de nouvelle tentative sécurisée n’est pas disponible, l’extension publie un résultat distinct au lieu de le supprimer.
Lorsque la publication en direct crée l’exécution, elle imprime l’URL d’exécution afin que vous puissiez suivre les résultats avant la fin. Il envoie également pipelineReference et la date de début lorsque l’environnement de pipeline les fournit. L’onglet Tests de la build ne répertorie pas une exécution en cours ; elle répertorie l’exécution après l’achèvement.
rapports GitHub Actions
Le rapport GitHub Actions émet des commandes de workflow propres à GitHub Actions afin que les exécutions de tests offrent une expérience de premier ordre dans le runner : des groupes de journaux par assembly, des annotations pour les tests échoués et ignorés (affichées dans l’onglet Annotations du workflow et, lorsque l’emplacement dans le code source peut être déterminé, dans le diff Files changed de la pull request), un résumé de tâche au format Markdown ajouté au fichier référencé par GITHUB_STEP_SUMMARY, ainsi que des notifications sur les tests lents.
Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.GitHubActionsReport.
L’extension s’active uniquement lorsque l’exécution se trouve sur GitHub Actions (la GITHUB_ACTIONS variable d’environnement est true) et que le --report-gh commutateur est défini ; sinon, il ne fait rien. Lorsqu’elle est active, chaque fonctionnalité est activée par défaut et peut être désactivée individuellement avec son --report-gh-* option.
Important
L’option --report-gh appartient à Microsoft.Testing.Extensions.GitHubActionsReport. Le package GitHubActionsTestLogger fournit une autre option. --report-github Les options ne sont pas des alias et fonctionnent uniquement lorsque le projet de test inscrit le package propriétaire de l’option.
Note
L’extension est disponible à partir de MTP 2.3.0. À compter de MTP 2.4.0, ses points d’entrée publics ne sont plus expérimentaux.
Inscription manuelle
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddGitHubActionsProvider();
Options
| Choix | Version MTP | Descriptif |
|---|---|---|
--report-gh |
2.3.0 | Active le générateur de rapports GitHub Actions afin que les exécutions de test émettent des commandes de flux de travail. Nécessite l’exécution sur GitHub Actions. |
--report-gh-groups |
2.3.0 | Active ou désactive les groupes de journalisation pour chaque assembly. Les valeurs valides sont on (par défaut) et off. Exige --report-gh. |
--report-gh-annotations |
2.3.0 | Active ou désactive les annotations pour les tests en échec et ignorés. Les valeurs valides sont on (par défaut) et off. Exige --report-gh. |
--report-gh-step-summary |
2.3.0 | Contrôle si l’extension écrit un résumé du travail Markdown dans le fichier référencé par GITHUB_STEP_SUMMARY. Les valeurs valides sont on (par défaut), offet, à compter de MTP 2.4.0, on-failure. Exige --report-gh. |
--report-gh-step-summary-sections |
2.4.0 | Sélectionne le contenu récapitulatif. Les valeurs valides sont test-results, slow-testset allcoverage(par défaut). Nécessite --report-gh et un mode récapitulatif autre que off. |
--report-gh-failure-details |
2.4.0 | Active ou désactive les détails limités des échecs dans le résumé du travail. Utilisez on (par défaut) ou off. Les détails incluent le message, le type d’exception, l’emplacement source et la trace de pile lorsqu’ils sont disponibles. Exige --report-gh. |
--report-gh-history |
2.4.0 | Lit et met à jour un instantané d’historique de test local limité au chemin d’accès du fichier spécifié. Le flux de travail doit télécharger l’instantané précédent avant l’exécution et charger le fichier mis à jour par la suite. Exige --report-gh. |
--report-gh-history-window |
2.4.0 | Définit la fenêtre d’historique conservée de 1 à 90 jours. La valeur par défaut est 30 jours. Exige --report-gh-history. |
--report-gh-slow-test-notices |
2.3.0 | Active ou désactive les avis de test lent. Les valeurs valides sont on (par défaut) et off. Exige --report-gh. |
--report-gh-slow-test-threshold |
2.3.0 | Durée d’exécution d’un test avant l’émission d’un avis de test lent. Accepte un nombre nu de secondes ou une valeur avec un suffixe d’unité tel que 90s, 2mou 1.5h. La valeur par défaut est 60s. Exige --report-gh. |
À compter de MTP 2.4.0, les résumés Markdown de GitHub Actions agrègent les résultats de tous les modules de test lors d’un appel dotnet test. Lorsque vous activez également la couverture du code, sélectionnez coverage ou all pour inclure le nombre d’éléments couverts et le nombre total, les pourcentages, les résultats des seuils, ainsi qu’un indicateur signalant que les données de couverture sont partielles.
Les détails de l’échec restent dans les budgets de message limité, de pile, de nombre d’échecs et de synthèse complète. Lorsque le contenu dépasse une limite, le rapport tronque ou le condense et indique cette réduction dans le résumé.