228 votes

Tests unitaires non découverts dans Visual Studio 2017

J'ai du mal avec VS 2017 depuis que je l'ai installé. Maintenant, il semble que les tests unitaires ne peuvent être exécutés qu'à partir de la ligne de commande "dotnet test".

Mon projet est .NET Core 1.1.1. J'ai installé le SDK et la mise à jour du framework pour 1.1.1.

J'ai essayé l'échantillon sur MSDN ( https://msdn.microsoft.com/en-us/library/ms182532.aspx ) qui échoue aussi exactement de la même manière.

Tous les paquets NuGet pour les tests et le projet principal sont à jour. Et le projet de test et le projet principal se construisent tous deux sans erreur. Et les tests s'exécutent avec succès depuis la ligne de commande.

Quelqu'un a-t-il réussi à faire fonctionner des tests unitaires dans VS 2017, si oui comment ?

Merci, John


Mise à jour - Extension

Voici un exemple d'un projet de test simple qui ne fonctionne pas sur GitHub . Il s'agit d'un exemple avec xUnit mais j'ai essayé NUnit et les tests MS intégrés à Visual Studio. Quels que soient les tests ou les modifications que je fais, je ne parviens pas à ce que l'exécuteur de tests VS trouve des tests.

Ce que j'ai essayé

  • Suppression des fichiers cache des tests VS DEL %TEMP%\VisualStudioTestExplorerExtensions
  • Redémarrage de VS
  • Fermeture/ouverture de l'explorateur de test
  • pour xUnit installé Microsoft.DotNet.InternalAbstractions ( voir poste SO )
  • pour NUnit, assurez-vous que l'adaptateur est installé et que la même version (3) que le paquet NUnit est installée.
  • test -> test settings -> default processor architecture est réglé sur x86

La question
Quelqu'un peut-il fournir un exemple fonctionnel d'une solution .Net Core 1.1.0 dans VS2017 (fichiers de projet .csproj) où l'explorateur de tests VS trouve avec succès les tests unitaires ? OU montrez-moi le problème dans l'exemple donné.

0 votes

J'ai découvert que VS2017 n'installe pas tous les paquets requis. Lorsque j'ai essayé de déplacer mon MonoGame de l'ancien PC vers le nouveau avec Windows 10 fraîchement installé et VS 2017, il a commencé à envoyer des erreurs bizarres sur les paquets manquants. Après avoir installé VS2015 en même temps que VS2017, tous les problèmes ont disparu. Essayez peut-être d'installer VS2015 en plus.

2 votes

Essayez d'installer les paquets de tests avec l'installateur de Visual Studio

0 votes

Je cherche à savoir si toutes les variables d'environnement de VS 2017 sont correctement définies.

199voto

Quality Catalyst Points 3977

Dans mon cas, il s'est avéré que je devais simplement mise à niveau mes adaptateurs de test et mon cadre de test. C'est fait.

Exemple d'utilisation du gestionnaire de paquets NuGet :

enter image description here

0 votes

J'ai rencontré le même problème avec un projet d'API Web 2 et cela a fonctionné.

4 votes

Cela m'a aidé aussi ! Notez que vous pouvez "Gérer les paquets Nuget" au niveau de la solution et faire cela pour tous les projets où cela est nécessaire. Vous pouvez alors obtenir des erreurs de "référence ambiguë" - pour celles-ci, il suffit de supprimer l'ancienne DLL (Microsoft.VisualStudio.QualityTools.UnitTestFramework) des références.

56 votes

Ces choses devraient être des extensions de Visual Studio, pas des paquets NuGet.

130voto

PmanAce Points 622

Cela vient de fonctionner pour moi (je ne sais pas si c'est le résultat du changement d'espace de travail qui a corrompu quelque chose) :

Suppression des fichiers de cache des tests VS dans %TEMP%. \VisualStudioTestExplorerExtensions et redémarrez VS2017.

5 votes

Cela a fonctionné une fois, mais plus après. Ce qui (cette fois) a réglé le problème pour moi, c'est la suppression du dossier TestResults et de bin/obj (ainsi que le nettoyage du répertoire temporaire).

24 votes

Tous ceux qui se demandent où %TEMP% - faites apparaître la fenêtre de commande et tapez echo %TEMP%

26 votes

Le dossier n'existe pas dans temp :/

60voto

Rob Prouse Points 9193

L'API des adaptateurs de test pour .NET Core a changé avec la sortie de Visual Studio 2017 et le passage de l'API de test à l'API de test. project.json au format csproj format. Cela a rendu le dotnet-test-* adaptateurs comme dotnet-test-nunit obsolète.

Les adaptateurs ont été mis à jour, mais la façon dont vous configurez et exécutez les tests dans Visual Studio ou sur la ligne de commande avec dotnet test nécessite des références différentes dans vos projets de test. Méfiez-vous de de toute documentation que vous trouvez et qui fait référence à des paquets dans les dotnet-test-* parce qu'ils sont dépassés.

D'abord, votre projet de test doit cibler une plate-forme spécifique, soit .NET Core, soit .NET Framework. Il ne peut pas cibler .NET Standard même si le code que vous testez est .NET Standard. En effet, la cible des tests indique sous quelle plate-forme les tests doivent être exécutés. .NET Standard est comme un PCL (Portable Class Library) dans la mesure où il peut fonctionner sur de nombreuses plateformes.

Ensuite, vous devez ajouter des références à Microsoft.NET.Test.Sdk , le framework de test de votre choix et un adaptateur de test compatible. Pour NUnit, vos références ressembleront à ceci,

<itemgroup>
    <packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference>
    <packagereference Include="NUnit" Version="3.7.1"></packagereference>
    <packagereference Include="NUnit3TestAdapter" Version="3.8.0"></packagereference>
</itemgroup>

Un commentaire ci-dessus mentionne d'ajouter,

<ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

Ce n'est pas strictement nécessaire, mais cela peut aider. Il est ajouté automatiquement à tous les projets de tests unitaires par Visual Studio pour l'aider à trouver rapidement les projets avec des tests.

Si vos tests n'apparaissent pas dans Visual Studio, la première chose à essayer est de fermer votre solution puis de la rouvrir. Il semble que des bogues empêchent Visual Studio de détecter les modifications apportées aux projets lorsque vous les modifiez.

Pour plus d'informations, voir Tester .NET Core avec NUnit dans Visual Studio 2017 .

2 votes

Le fait de cibler .NET Framework plutôt que .NET Standard a fonctionné pour moi. Merci.

7 votes

La référence Microsoft.NET.Test.SDK manquait dans mon projet et rien n'indiquait que l'affichage dépendait de cette référence. Je l'ai ajoutée via la console nuget et tout a commencé à fonctionner. Merci pour la liste des références !

0 votes

J'ai dû copier ce dossier d'un collègue dans mon répertoire temporaire et redémarrer VS : %TEMP%. \VisualStudioTestExplorerExtensions\MSTest.TestAdapter .1.1.18

58voto

kidroca Points 536

Oublier de faire la classe d'essai public empêche de découvrir les méthodes de test à l'intérieur.

J'avais un projet xUnit par défaut et j'ai supprimé l'exemple UnitTest1.cs, le remplaçant par une classe de test de contrôleur, avec quelques tests, mais aucun n'a été trouvé.

Pour faire court, après avoir mis à jour les paquets xUnit, Test.Sdk, xUnit.runner et reconstruit le projet, j'ai rencontré une erreur de construction :

Erreur xUnit1000 Les classes de test doivent être publiques.

Heureusement, la version mise à jour a rejeté cette exception pour m'épargner quelques ennuis.

Modifier la classe de test pour qu'elle soit publique a réglé mon problème.

7 votes

Je ne sais pas pourquoi j'ai voté moins, mais avant mon café du matin, j'ai négligé ce point.

1 votes

J'ai essayé toutes les autres réponses à cette question/ce problème et c'est celle-là qui a finalement fonctionné !

3 votes

Celui-là est incroyablement embarrassant mais peu importe. La chose hilarante est que si vous créez un cas de suite de test dans VS2017, il sera pas générer le public mais seulement la classe, de sorte qu'il ne la découvrira pas tant que vous n'aurez pas ajouté l'élément public identifiant.

42voto

Sanchal Kunnel Points 359

J'ai eu le même problème et j'ai réussi à le faire fonctionner en faisant ce qui suit :

  • Tout d'abord, fermez toutes les instances ouvertes de Visual Studio et supprimez ce dossier : %TEMP%. \VisualStudioTestExplorerExtensions ( Exécuter des tests avec Visual Studio )
  • Allez dans votre gestionnaire de paquets NuGet et installez d'abord Microsoft.NET.Test.Sdk (15.3.0-preview-20170425-07), puis installez xunit.runner.visualstudio (2.3.0-beta1-build1309). Voir la capture d'écran NuGet ci-jointe pour voir tous les paquets que j'ai dû installer pour obtenir la dernière version de VS 2017 afin de détecter mes tests. NuGet Screenshot

35 votes

Suppression de %Temp% \VisualStudioTestExplorerExtensions était suffisant pour moi.

0 votes

Oui. En supprimant ça et en redémarrant VS, ça a marché.

0 votes

Quelqu'un sait-il quelle en est la cause première ? Cela m'est arrivé deux fois, mais la suppression de ce dossier et le redémarrage de VS ont fonctionné. C'est juste bizarre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X