unit-testing - setup - visual studio unit test




Visual Studio 2015 ou 2017 ne découvre pas les tests unitaires (20)

EDIT 2016-10-19 (script PowerShell)

Ce problème revient toujours de temps en temps. J'ai écrit un petit extrait de code PowerShell pour automatiser le nettoyage du cache / du dossier temporaire / des fichiers correspondants. Je le partage ici pour les futurs lecteurs:

@(
"$env:TEMP"
"$env:LOCALAPPDATA\Microsoft\UnitTest"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ComponentModelCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\Designer\ShadowCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ImageLibrary\cache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio Services\6.0\Cache"
"$env:LOCALAPPDATA\Microsoft\WebsiteCache"
"$env:LOCALAPPDATA\NuGet\Cache"
) |% { Remove-Item -Path $_ -Recurse -Force }

Assurez-vous de fermer Visual Studio au préalable et c'est probablement une bonne idée de redémarrer par la suite.

La suppression du dossier TEMP peut ne pas être nécessaire et même dans certains cas être indésirable. Je vous recommande donc d'essayer sans effacer le dossier TEMP au préalable. Oubliez simplement "$env:TEMP" .

Réponse originale le 12/04/2015

Le problème a été "résolu" après un nettoyage approfondi des dossiers temp / cache liés à Visual Studio.

Comme je n’ai pas eu le temps de tout parcourir un par un, puis de faire des essais entre les deux, je ne sais malheureusement pas lequel a réellement causé le problème.

Ce sont les mesures exactes que j'ai prises:

  1. Fermé Visual Studio
  2. CCleaner utilisé pour effacer les fichiers / dossiers temp système et du navigateur
  3. Supprimez / supprimez manuellement les fichiers / dossiers suivants:

    • %USERPROFILE%\AppData\Local\assembly
    • %USERPROFILE%\AppData\Local\Microsoft\UnitTest
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\Designer\ShadowCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ImageLibrary\cache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio Services\6.0\Cache
    • %USERPROFILE%\AppData\Local\Microsoft\WebsiteCache
    • %USERPROFILE%\AppData\Local\NuGet\Cache
    • %USERPROFILE%\AppData\Local\Temp

EDIT 2016-10-19:

La question initiale concernait un problème spécifique à VS2015 CTP6 avec le programme d'exécution de test XUnit. Il ressort clairement des réponses que la découverte de tests unitaires dans Visual Studio est un problème beaucoup plus vaste qui peut se produire dans de nombreuses situations différentes. J'ai nettoyé ma question pour refléter cela.

J'ai également inclus un script dans ma propre réponse, que j'utilise encore à ce jour pour résoudre des problèmes similaires lorsqu'ils apparaissent.

De nombreuses autres réponses se sont également révélées utiles pour mieux comprendre les subtilités du coureur de test VS. J'apprécie que les gens partagent encore leurs solutions!

Question originale 2015-04-10:

Depuis hier, Visual Studio Test Explorer ne détecte aucun test pour aucun de mes projets. Il ne montre pas non plus la barre de chargement verte après la construction.

Lorsque je vais dans l'Explorateur de tests Visual Studio et que je clique sur "Tout exécuter", ou que je clique avec le bouton droit de la souris sur une méthode de test et que je sélectionne "Exécuter les tests", le message suivant s'affiche dans la fenêtre de sortie:

Could not load file or assembly 'Microsoft.VisualStudio.Web.ProjectSystem, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

J'utilise Visual Studio 2015 CTP 6 sous Windows 10 Pro Technical Preview, version 10041. La version de .NET Framework ne semble pas avoir d'importance - cela se produit sous 4.0 , 4.5.2 et 4.6 .

J'ai essayé avec les frameworks de test suivants et tous donnent le même comportement:

  • Microsoft.VisualStudio.QualityTools.UnitTestFramework v14.0.22609.0
  • xunit v2.1.0-beta1-build2945 avec xunit.runner.visualstudio v2.1.0-beta1-build1051
  • NUnit v2.6.4 avec NUnitTestAdapter v2.0.0

J'ai trouvé un problème sur GitHub (xunit) qui semblait être similaire: impossible de faire découvrir les tests n ° 295 , avec ce commentaire de l'équipe xunit:

Sachez que Visual Studio 2015 CTP 5 a été signalé comme étant cassé par de nombreuses personnes ayant des tests unitaires en général (pas seulement xUnit.net), ne vous attendez donc pas à ce que cela fonctionne.

Assurez-vous également que vous avez nettoyé le cache du coureur de Visual Studio. S'il est corrompu, Visual Studio se comportera de manière irréversible jusqu'à sa suppression. Pour effacer le cache, fermez toutes les instances de Visual Studio, puis supprimez le dossier% TEMP% \ VisualStudioTestExplorerExtensions (honnêtement, il ne serait probablement pas nuisible de supprimer tout ce qui peut être supprimé dans% TEMP%).

J'ai essayé leur suggestion de supprimer le dossier %TEMP%\VisualStudioTestExplorerExtensions . Malheureusement, cela n'a pas résolu le problème.

J'ai remarqué que ReSharper est en mesure de découvrir des tests. Cela ne fonctionne que pour les tests VS et NUnit, pas pour xunit.

Il faut qu'il y ait une sorte de dossier temporaire ou de cache que je dois effacer, mais je sais que Visual Studio en contient beaucoup et que tous ne peuvent pas être supprimés sans effets secondaires indésirables.


À ma grande surprise, effacer les fichiers temporaires situés dans le répertoire %TEMP% résolu le problème pour moi.

Remarque: Ce chemin est généralement situé à l' C:\Users\(yourusername)\AppData\Local\Temp

Comme @ Warren-P inclus, vous pouvez accéder au dossier temp en mettant %temp% dans le menu Démarrer, ou lancer "Explorateur de fichiers" et entrer %temp% dans la barre d'adresse.


Assurez-vous d'avoir le package xunit.runner.visualstudio dans votre projet test packages.config et qu'il a également été correctement restauré.

Je sais que ce n'était pas le cas de la question initiale, mais cela pourrait faire gagner du temps à quelqu'un comme moi.


Ce sujet est quelque peu obsolète, mais ma solution au statut de test manquant dans VS2015:

L'état de la tâche n'apparaît que sur la configuration de construction Debug. Bien entendu, cela rend également impossible le débogage de votre test via le test-explorer.


Cela n’aidera probablement pas la plupart des gens, mais une personne inexpérimentée au test unitaire avait écrit une méthode de test qui bool au lieu de void :

[TestMethod]
public bool TestSomething()

Changer le type de retour en void résolu le problème.


D'une manière ou d'une autre, mon projet était configuré pour être compilé en tant que bibliothèque statique (.lib) . Après avoir changé cela en une bibliothèque dynamique (.dll) , les tests ont été correctement découverts par Visual Studio 2012.

My Unit Test Project ->
Properties ->
Configuration Properties ->
General ->
Configuration Type

Dans mon cas (Visual Studio Enterprise 2015 14.0.25425.01, mise à jour 3, Resharper 2016.2), je devais créer une solution propre à partir du menu Générer. En reconstruisant la solution, l'explorateur de tests se "réveille" et retrouve tous les tests.


Dans mon cas, MSTest sous VS 2015 ignorait les tests avec des noms de test (c.-à-d. Méthode) de plus de 174 caractères. En raccourcissant le nom, le test était visible. Cela a été déterminé par devinettes et vérifications en manipulant le nom du test.


Il était si facile pour moi de résoudre le problème comme suit:

  • Sélectionnez votre projet de test unitaire
  • Cliquez sur le bouton 'Afficher tous les fichiers' dans l'Explorateur de solutions. De nouveaux fichiers temporaires sont apparus dans l'arborescence de l'Explorateur de solutions sous 'obj \ x86 \ Debug'.
  • Supprimez ces fichiers temporaires et reconstruisez le projet.
  • Retenté pour exécuter des tests et a travaillé!.

Il se peut que vos codes soient compilés avec x64 et doivent donc activer l’architecture de processeur par défaut en tant que X64.

Test > Test Settings > Default Processor Architecture > X64

J'ai également été mordu par cette merveilleuse petite fonctionnalité et rien de ce qui est décrit ici ne fonctionnait pour moi. Ce n'est que lorsque j'ai vérifié deux fois la sortie de la construction et constaté que les projets pertinents n'étaient pas en cours de construction. Une visite au responsable de la configuration a confirmé mes soupçons.

Visual Studio 2015 m'avait permis d'ajouter de nouveaux projets, mais avait décidé que cela ne valait pas la peine de les construire. Une fois que j'ai ajouté les projets à la construction, il a commencé à bien jouer.


J'ai eu le même problème. Je viens de nettoyer et de reconstruire le projet et j'ai pu voir les tests manquants.


J'avais le même pronlem mais le dossier "% TEMP% \ VisualStudioTestExplorerExtensions" n'existait pas sur ma machine, j'ai donc eu l'idée de le créer et cela a fonctionné. L'explorateur de tests est maintenant capable d'afficher tous mes tests. Merci.


Je l'ai résolu en changeant X64 en: Clic droit sur le projet -> Propriétés -> Construire -> Cible de la plate-forme -> Tout processeur


Je n'ai pas de réponse complète à cela, mais j'ai déterminé certaines choses en jouant avec un projet test:

  1. xunit.runner.aspnet : 2.0.0-aspnet-beta4 qui semble faire partie de la version bêta 4 officielle d'aspnet5 ne fonctionne pas dans Visual Studio.
  2. À la place, les "xunit": "2.1.0-*" et "xunit-runner.dnx": "2.1.0-*" fonctionnent dans Visual Studio.
  3. Pour que VS puisse découvrir les tests, votre projet DOIT avoir une seule commande nommée "test" qui exécute "xunit.runner.dnx". L'ajout de commandes supplémentaires peut le casser.
  4. Si votre fenêtre Test Explorer finit toujours par être vide, RETIREZ la commande "test" de votre projet, puis reconstruisez la solution, puis rajoutez la commande "test" au projet.json.
  5. Effacer toutes vos caches selon la suggestion de @ Fred-Kleuver peut aider, mais je n’ai pas fait toutes les étapes isolément, je ne suis donc pas sûr.

Ceci est courant selon la norme VS 2015 CTP 6, en utilisant les versions bêta 4, pas les quotidiens.


Je voudrais juste ajouter que j'ai trouvé une solution totalement différente de celles mentionnées ci-dessus.

J'avais déclaré ma classe de test comme ci-dessous:

[TestClass]
class ClassificationTests
{
   //unit tests
}

Dès que j'ai ajouté le modificateur public à la classe, cela a fonctionné comme prévu!


La suppression du fichier \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ 1033 \ SpecificFold‌ erCache.xml a résolu le problème pour moi.


Nous avons eu le même problème. Nous avons une grande solution VS 2015 avec plusieurs projets C # et encore plus de projets de test.

La découverte de test de Resharper a bien fonctionné, mais VS Test Explorer a échoué lamentablement.

Il s'avère que les projets ne possédaient pas la même version de MsTest TestFramework et TestAdapter, et qu'ils utilisaient parfois NuGets et d'autres fois de bonnes références anciennes, et cela n'est apparemment pas pris en charge (tant pour un IDE aussi coûteux).

La suppression de toutes les références Microsoft.VisualStudio.Test * , puis l' ajout / la mise à jour des deux MSTest NuGets ont résolu le problème.


Si vous ciblez .NET Standard ou .NET Core, vous devez utiliser le package NuGet pour NUnit Test Adapter et non l’extension .

Il est recommandé d'installer l'adaptateur à partir de NuGet si vous testez des projets .NET Core ou .NET Standard. L'adaptateur VSIX ne prend pas et ne prendra pas en charge .NET Core car les packages VSIX ne peuvent pas cibler plusieurs plates-formes.

Source: github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard

.

Consultez également la FAQ ici:

Mes tests n'apparaissent pas dans Visual Studio 2017?

  • Utilisez-vous le paquet NuGet?
  • Utilisez-vous la version 3.8.0 ou une version plus récente du package NuGet?
  • Est-ce que vos tests ciblent .NET Core ou le .NET Framework complet? (voir au dessus)
  • Avez-vous ajouté une référence de package à Microsoft.NET.Test.Sdk?
  • Avez-vous redémarré Visual Studio? C'est encore un peu tempéré.

Source: github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard


Une des raisons de ce problème est que votre classe de test n'est pas publique. MSTest découvre uniquement les tests des classes publiques.







test-runner