EDIT 2016-10-19:
La question initiale concernait un problème spécifique à VS2015 CTP6 avec le lanceur de test XUnit. Il ressort clairement des réponses qu'il existe un problème beaucoup plus large avec la découverte des tests unitaires dans Visual Studio, 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 avérées utiles pour mieux comprendre les subtilités du testeur VS. J'apprécie que les gens partagent toujours leurs solutions!
Question originale 10/04/2015:
Depuis hier, mon explorateur de tests Visual Studio ne découvrira les tests pour aucun de mes projets. Il n'affiche 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 lorsque je clique avec le bouton droit sur une méthode de test et que je sélectionne «Exécuter les tests», j'obtiens ce qui suit dans ma 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'exécute Visual Studio 2015 CTP 6 sur Windows 10 Pro Technical Preview, build 10041. La version .NET Framework ne semble pas avoir d'importance - cela se produit sur 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
avecxunit.runner.visualstudio v2.1.0-beta1-build1051
NUnit v2.6.4
avecNUnitTestAdapter v2.0.0
J'ai trouvé un problème sur GitHub (xunit) qui semblait être similaire: Impossible d'obtenir les tests découverts # 295 , avec ce commentaire de l'équipe xunit:
Sachez que Visual Studio 2015 CTP 5 a été signalé comme étant interrompu par de nombreuses personnes ayant des tests unitaires en général (pas seulement xUnit.net), alors ne vous attendez pas à ce que cela fonctionne.
Assurez-vous également d'avoir nettoyé le cache d'exécution de Visual Studio. S'il est corrompu, Visual Studio se comportera de manière permanente jusqu'à ce qu'il soit supprimé. Pour vider le cache, arrêtez toutes les instances de Visual Studio, puis supprimez le dossier% TEMP% \ VisualStudioTestExplorerExtensions (honnêtement, cela ne ferait probablement pas de mal 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 fait capable de découvrir certains tests. Cela ne fonctionne que pour les tests VS et NUnit, pas pour xunit.
Il doit y avoir une sorte de dossier temporaire ou de cache que je dois effacer, mais je sais que Visual Studio en a beaucoup et que tous ne peuvent pas être supprimés sans effets secondaires indésirables.
Réponses:
À ma grande surprise, la suppression des fichiers temporaires situés dans le
%TEMP%
répertoire a résolu le problème pour moi.Remarque: ce chemin est généralement à
C:\Users\(yourusername)\AppData\Local\Temp
Comme @ Warren-P inclus, vous pouvez naviguer vers le dossier temporaire en le mettant dans le
%temp%
menu Démarrer, ou lancer "File Explorer" et entrer%temp%
dans la barre d'adresse.la source
%TEMP%
dans le menu Démarrer Exécuter et il trouve votre dossier temporaire pour vous sans que vous deviniez quelle est la valeur de temp.%TEMP%
annuaire mérite de cesser de fonctionner.Il se peut que votre code soit compilé avec x64, donc devez activer l'architecture de processeur par défaut en tant que X64.
la source
Vérifiez si NUnit Test Adapter 2/3 est installé dans VisualStudio.
(Tools>Extensions and Updates )
Assurez-vous que l'architecture de processeur appropriée est choisie:
(Test>Test Settings>Default Processor Architecture)
la source
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 la suppression du cache / dossier temporaire / fichiers pertinents pour moi. Je le partage ici pour les futurs lecteurs:
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 peut même être indésirable dans certains cas, je vous recommande donc d'essayer sans effacer d'abord le dossier TEMP. Omettez simplement le
"$env:TEMP"
.Réponse originale 2015-04-12
Le problème a été «résolu» après un nettoyage en profondeur des dossiers temporaires / cache liés à Visual Studio.
Comme je n'ai pas eu le temps de tout parcourir un par un puis de tester entre les deux, je ne sais malheureusement pas lequel a réellement causé le problème.
Voici les étapes exactes que j'ai prises:
temp
fichiers / dossiers du système et du navigateurEffacer / supprimer 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
la source
\Microsoft\VisualStudio\14.0\ImageLibrary\ImageLibrary.cache
?L'une des raisons de ce problème est que votre classe de test n'est pas publique. MSTest ne découvre que les tests des classes publiques.
la source
Dans Visual Studio 2015 (mise à jour 3), si vous souhaitez attacher les tests dans l'explorateur de tests, vous devez installer l' adaptateur de test NUnit.Téléchargez l'adaptateur à partir de l' onglet Outils-> Extension et mises à jour-> En ligne (vous devez rechercher l'adaptateur ) -> Télécharger . En redémarrant Visual Studio, vous pouvez voir la modification de l'infrastructure de test.
la source
Je n'ai pas de réponse complète à cela, mais j'ai déterminé certaines choses en jouant avec un projet de test:
xunit.runner.aspnet : 2.0.0-aspnet-beta4
qui semble faire partie de la version bêta4 officielle aspnet5 ne fonctionne pas dans Visual Studio."xunit": "2.1.0-*"
et les"xunit-runner.dnx": "2.1.0-*"
packages fonctionnent dans Visual Studio.Ceci est actuel selon VS 2015 CTP 6, en utilisant les versions beta4, pas les quotidiens.
la source
J'ai eu une instance où certains tests ne seraient pas repris parce que je les avais faits
async
comme suit:public async void This_IsMy_UnitTest()
Le problème était que j'avais oublié de les faire revenir a
Task
et pasvoid
quand j'ai fait le basculement. On pourrait penser que cela provoquerait une erreur ou un test échoué, mais non. Les tests unitaires de cette classe ont été totalement ignorés et ont agi comme s'ils n'existaient pas.Ce n'est pas après environ 3 nettoyages et builds + redémarrage
VS.NET
que j'ai vu le test s'exécuter et échouer, indiquant que j'ai oublié d'ajouter leTask
type de retour:public async Task This_IsMy_UnitTest()
Après la mise à jour, les tests unitaires ont été trouvés et ont fonctionné correctement. Cela peut être un cas limite, mais avoir des
async
tests pour utiliserawait
dedans mais ne pas avoir la signature correcte peut causer ce même problème et ce n'est pas la première fois que je fais cela.la source
Accédez au gestionnaire de packages Nuget et téléchargez Nunit Adapter comme suit.
la source
J'avais le même pronlem mais le dossier "% TEMP% \ VisualStudioTestExplorerExtensions" n'existait pas sur ma machine alors en lisant les messages j'ai eu l'idée de le créer et ça marche. L'explorateur de tests est maintenant capable d'afficher tous mes tests. Merci.
la source
Redémarrez simplement Visual Studio et dans l'Explorateur de tests, faites "Tout exécuter" ... Tous mes tests sont alors découverts.
la source
Dans mon cas (Visual Studio Enterprise 2015 14.0.25425.01 Update 3, Resharper 2016.2), j'avais juste besoin de faire une solution propre à partir du menu Générer. La reconstruction de la solution provoque alors le «réveil» de l'explorateur de tests et la recherche de tous les tests.
la source
La solution dans mon cas était simplement d'installer l' extension NUnit 3 Test Adapter sur mon Visual Studio 2015.
la source
Dans mon cas, le problème était "entre la chaise et le clavier". J'étais passé à une configuration dans le gestionnaire de configuration qui n'incluait pas mes projets de test unitaire lors de la construction. Le retour à une configuration (par exemple Debug) qui inclut tous les projets a résolu le problème.
la source
Dans mon cas, MSTest sous VS 2015 ignorait les tests avec des noms de test (c'est-à-dire de méthode) de plus de 174 caractères. Raccourcir le nom a permis au test d'être visible. Cela a été déterminé par deviner et vérifier en manipulant le nom du test.
la source
Cela n'aidera probablement pas la plupart des gens, mais quelqu'un inexpérimenté dans les tests unitaires avait écrit une méthode de test qui retournait
bool
au lieu devoid
:Modification du type de retour pour
void
résoudre le problème.la source
Assurez-vous que vous avez un
xunit.runner.visualstudio
package dans votre projet de test packages.config et qui 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.
la source
Je voudrais juste ajouter que j'ai trouvé une solution totalement différente de celles ci-dessus.
J'avais déclaré ma classe de test comme ci-dessous:
Dès que j'ai ajouté le
public
modificateur à la classe, cela a fonctionné comme prévu!la source
Si vous ciblez .NET Standard ou .NET Core, vous devez utiliser le package NuGet pour NUnit Test Adapter et non l'extension .
Source: Wiki NUnit GitHub
.
Consultez également la FAQ ici:
Source: Wiki NUnit GitHub
la source
Cela m'est arrivé parce que mon projet de test contenait un fichier
app.config
. Il a été automatiquement ajouté par les packages NuGet pour la redirection d'assembly, mais mes tests semblaient bien fonctionner sans lui.Voir: https://developercommunity.visualstudio.com/comments/42858/view.html .
la source
J'ai eu le même problème. Je viens de nettoyer et reconstruire le projet et j'ai pu voir les tests qui manquaient.
la source
Je passe pour partager ma solution. J'étais sous Windows 10, Visual Studio 2015, NUnit 3.5, NUnit Test Adapter 3.6 (via NuGet, pas l'extension VISX) et aucun de mes tests n'a été découvert. Mon problème était que dans le projet Tests de ma solution, un raccourci vers mon dossier "Documents" avait été créé dans le dossier du projet. J'imagine que l'adaptateur de test voyait le raccourci et se raccrochait en essayant de savoir quoi en faire, entraînant l'échec de l'affichage des tests unitaires.
la source
La suppression du fichier \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ 1033 \ SpecificFold erCache.xml a résolu le problème pour moi.
la source
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 build de débogage. Bien sûr, cela rend également impossible le débogage de votre test via l'explorateur de tests.
la source
J'ai également été mordu par cette merveilleuse petite fonctionnalité et rien de décrit ici n'a fonctionné pour moi. Ce n'est que lorsque j'ai revérifié le résultat de la construction et que j'ai remarqué que les projets pertinents n'étaient pas en cours de construction. Une visite au gestionnaire de configuration a confirmé mes soupçons.
Visual Studio 2015 m'avait heureusement permis d'ajouter de nouveaux projets, mais a décidé que cela ne valait pas la peine de les construire. Une fois que j'ai ajouté les projets à la construction, la lecture a bien commencé.
la source
Je l'ai résolu en changeant X64 en: Faites un clic droit sur le projet -> Propriétés -> Build -> Platform target -> Any CPU
la source
D'une manière ou d'une autre, mon projet a été configuré pour se compiler en tant que bibliothèque statique (.lib) . Après avoir changé cela en une bibliothèque dynamique (.dll) , les tests ont été détectés correctement par Visual Studio 2012.
la source
Il était si facile pour moi de résoudre le problème comme suit:
la source
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 très bien fonctionné, mais VS Test Explorer a lamentablement échoué.
Il s'avère que les projets n'avaient pas la même version de MsTest TestFramework et TestAdapter, et que parfois ils utilisaient NuGets et d'autres fois de bonnes vieilles références, et cela n'est apparemment pas pris en charge (tant pour un IDE aussi cher).
La suppression de toutes les références Microsoft.VisualStudio.Test * , puis l' ajout / la mise à jour des deux NuGets MSTest ont résolu le problème.
la source
J'ai résolu ce problème en réalisant que le cadre cible de mon projet de test était différent du projet en cours de test. Oui, j'ai causé ce problème en modifiant le cadre cible par défaut (Projet> Propriétés> Application), mais j'ai échoué à cela pour le projet de test, qui a été créé plusieurs semaines plus tard. La non-concordance n'a pas provoqué d'erreur du compilateur, mais elle a entraîné un avertissement dans la fenêtre Liste d'erreurs . Une fois que j'ai sélectionné l'option d'affichage des avertissements, la solution était évidente.
la source