Tout appel dans mes tests unitaires à l'un Debug.Write(line)
ou l' autre est Console.Write(Line)
simplement ignoré lors du débogage et la sortie n'est jamais imprimée. Les appels à ces fonctions depuis les classes que j'utilise fonctionnent correctement.
Je comprends que les tests unitaires sont censés être automatisés, mais j'aimerais toujours pouvoir sortir des messages à partir d'un test unitaire.
J'essayais également de faire fonctionner Debug ou Trace ou Console ou TestContext dans les tests unitaires.
Aucune de ces méthodes ne semble fonctionner ou afficher la sortie dans la fenêtre de sortie:
Visual Studio 2012 et supérieur
(à partir des commentaires) Dans Visual Studio 2012, il n'y a pas d'icône. Au lieu de cela, il existe un lien dans les résultats du test appelé Sortie . Si vous cliquez sur le lien, vous voyez tous les
WriteLine
.Avant Visual Studio 2012
J'ai alors remarqué dans ma fenêtre Résultats du test , après avoir exécuté le test, à côté du petit cercle vert de réussite , il y a une autre icône. J'ai doublé le clic. C'était mes résultats de test, et il comprenait tous les types d'écrits ci-dessus.
la source
Dans Visual Studio 2017, vous pouvez voir la sortie de l'explorateur de tests.
1) Dans votre méthode de test, Console.WriteLine ("quelque chose");
2) Exécutez le test.
3) Dans la fenêtre Explorateur de tests, cliquez sur la méthode de test réussie.
4) Et cliquez sur le lien "Sortie".
Et cliquez sur "Sortie", vous pouvez voir le résultat de Console.Writeline ().
la source
Console.WriteLine
n'est pas non plus visible dans le volet Sortie sous "Tests".Cela dépend de votre testeur ... par exemple, j'utilise xUnit , donc si c'est ce que vous utilisez, suivez ces instructions:
https://xunit.github.io/docs/capturing-output.html
Cette méthode regroupe votre sortie avec chaque test unitaire spécifique.
Il existe une autre méthode répertoriée dans le lien que j'ai fourni pour écrire dans votre fenêtre de sortie, mais je préfère la précédente.
la source
Je pense que c'est toujours d'actualité.
Vous pouvez utiliser ce package NuGet : Bitoxygen.Testing.Pane
Appelez la méthode WriteLine personnalisée à partir de cette bibliothèque. Il crée un volet Test dans la fenêtre Sortie et y place toujours les messages (lors de chaque test, il s'exécute indépendamment des indicateurs DEBUG et TRACE).
Pour faciliter le traçage, je peux recommander de créer une classe de base:
la source
Could not load file or assembly 'Microsoft.VisualStudio.Shell.12.0,
Essayez d'utiliser:
Console.WriteLine()
L'appel à
Debug.WriteLine
ne sera effectué que lorsque DEBUG est défini.D'autres suggestions sont à utiliser:
Trace.WriteLine
aussi, mais je n'ai pas essayé cela.Il existe également une option (je ne sais pas si Visual Studio 2008 l'a), mais vous pouvez toujours Utiliser
Debug.WriteLine
lorsque vous exécutez le test avec l'Test With Debugger
option dans l'EDI.la source
Résolu avec l'exemple suivant:
Après avoir exécuté ce test, sous «Test réussi», il existe une option pour afficher la sortie, ce qui fera apparaître la fenêtre de sortie.
la source
Cela dépend en effet du testeur comme l'a mentionné @jonzim. Pour NUnit 3, j'ai dû utiliser
NUnit.Framework.TestContext.Progress.WriteLine()
pour obtenir la sortie en cours d'exécution dans la fenêtre Sortie de Visual Studio 2017.NUnit décrit comment: ici
À ma connaissance, cela tourne autour de la parallélisation supplémentaire de l'exécution des tests que les testeurs ont reçue.
la source
Je n'obtiens aucune sortie lorsque mon paramètre Test / Paramètres de test / Architecture de processeur par défaut et les assemblys auxquels mon projet de test fait référence ne sont pas les mêmes. Sinon, Trace.Writeline () fonctionne correctement.
la source
Console.WriteLine ne fonctionnera pas. Seuls Debug.WriteLine () ou Trace.WriteLine () fonctionneront, en mode débogage.
Je fais ce qui suit: inclure l' utilisation de System.Diagnostics dans le module de test. Ensuite, utilisez Debug.WriteLine pour ma sortie, faites un clic droit sur le test , choisissez Déboguer les tests sélectionnés . La sortie du résultat apparaîtra maintenant dans la fenêtre Sortie ci-dessous. J'utilise Visual Studio 2017 vs 15.8.1, avec le framework de test unitaire par défaut fourni par VS.
la source
Êtes-vous sûr d'exécuter vos tests unitaires dans Debug? Debug.WriteLine ne sera pas appelé dans les versions Release.
Deux options à essayer sont:
Trace.WriteLine (), qui est intégré dans les versions de version ainsi que dans le débogage
Annuler la définition de DEBUG dans vos paramètres de construction pour le test unitaire
la source
J'utilise xUnit , c'est donc ce que j'utilise:
PS: vous pouvez
Debugger.Break();
également l' utiliser , de sorte que vous pouvez voir votre connexionout
.la source
out
"?Une variante différente de la cause / solution:
Mon problème était que je n'obtenais pas de sortie parce que j'écrivais le jeu de résultats d'un appel LINQ asynchrone à la console dans une boucle dans un contexte asynchrone:
Ainsi, le test n'écrivait pas dans la console avant que l'objet console ne soit nettoyé par le runtime (lors de l'exécution d'un seul test).
La solution était de convertir d'abord le jeu de résultats en liste, afin que je puisse utiliser la version non asynchrone de forEach ():
la source
Dans VS 2019
View
->Test Explorer
additional output
lien comme indiqué dans la capture d'écran ci-dessous.Vous pouvez utiliser:
tous se connecteront à la fenêtre de sortie supplémentaire.
la source
Trace.WriteLine
devrait fonctionner à condition que vous sélectionniez la sortie correcte (la liste déroulante intitulée "Afficher la sortie de" se trouve dans la fenêtre Sortie ).la source