MSTest: Aucun test n’est exécuté car aucun test n’est chargé ou les tests sélectionnés sont désactivés

J’ai une solution ac # avec la structure suivante:

mySolution myProject myProject.MSTests References Microsoft.VisualStudio.QualityTools.UnitTestFramework sutMSTests.cs 

sutMSTests.cs:

 [TestClass()] public class sutMSTests { [TestMethod] public void MyTest0() { Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(4, 2 + 2); } } 

Lorsque j’essaie d’exécuter les tests via Test, Run, All Tests In Solution, j’obtiens les informations suivantes sur la ligne d’état du VS2008:

Aucun test n’est exécuté car aucun test n’est chargé ou les tests sélectionnés sont désactivés.

Test, Windows, Test View ne montre aucun test.

Remarque: j’ai créé les tests manuellement (fonctionne pour xUnit.net) au lieu d’utiliser les assistants de Microsoft.

J’ai comparé ma configuration MSTest créée manuellement à la configuration d’un autre test que j’ai généré avec l’assistant et ils semblent être suffisamment similaires.

Question: Quelles sont les causes les plus probables du message d’erreur ci-dessus?

Modifier 2010-02-25: Plus d’informations:
J’ai cliqué avec le bouton droit de la souris sur le dossier Éléments de la solution et choisissez Ajouter, Nouveau projet, tapez Projets de test, Modèles de documents de test :: Projet de test Visual Studio.

Le test par défaut du nouveau projet “TestMethod1” a été détecté et transmis.
Cependant, mon test ne s’est pas présenté … alors j’ai copié et collé ma méthode de test dans le projet de test de test par défaut “TestProject1”.

Mon test a été détecté dans “TestProject” MAIS pas à son emplacement d’origine.

J’ai comparé étroitement les fichiers, l’organisation et les parameters de “TestProject1” avec mon projet de test créé manuellement.

À ce stade, je suppose que certains parameters sont créés par le modèle de projet de test Visual Studio qui est difficilement détectable.

imo, il devrait être aussi facile de créer un projet de test à la main que d’en créer un avec le modèle de projet de test Visual Studio.

notez s’il vous plaît: je ne dis pas que je suis contre l’utilisation du modèle de projet de test de Visual Studio; pour moi, j’aime bien comprendre ce qui se cache derrière le rideau, car cela me fait penser à un meilleur programmeur.

Un autre pour les googleurs – celui-ci s’est avéré être mon problème, et il est embarrassant face à moi. Assurez-vous que votre projet de test est configuré pour intégrer la solution que vous utilisez. Si l’assemblage de test n’est pas en cours de construction, VS ne pourra pas trouver de test dans l’assemblage inexistant et vous vous cogner la tête contre le mur pendant un certain temps 🙂

Peut-être un peu tard, mais cette question va bien, je pensais jeter quelques miettes pour les futurs googleurs.

Bryan Cook suggère de vérifier les ProjectTypeGuids dans son article sur la création manuelle d’un projet de test MS . Apparemment, les GUID magiques dont vous avez besoin sont {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} pour c # et {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F} pour VB. Voir son blog pour plus de détails.

Dans le cas où l’article d’un blog disparaît, vous devez append l’élément suivant dans le groupe de propriétés principal du fichier csproj:

 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 

Une autre idée pour les Googlers. Mon problème consistait à relancer les tests ignorés. Même message d’erreur MS se produit si vous supprimez l’étiquette Ignorer. Ne réactive pas automatiquement le test. Cet article vous guide à travers la dernière étape. http://richallen.blogspot.com/2008/05/ms-test-re-enabling-ignored-tests.html

Le correctif est simple, même s’il ne devrait pas être nécessaire, si Visual Studio fonctionnait comme il se doit.

Pour résumer ce que les autres ont consortingbué, en particulier dans cet article , voici ce qui a finalement fonctionné pour moi:

  • Utilisez le gestionnaire de configuration pour vous assurer que votre projet de test est sélectionné pour intégrer la configuration et la plate-forme que vous utilisez (ex: configuration = Debug et platform = x86)
  • Assurez-vous que votre méthode appartient à un [TestClass] et qu’elle est à la fois marquée [TestMethod] , et PAS en utilisant l’atsortingbut [Ignore]
  • Utilisez Test View pour trouver votre test. Test View
  • Ouvrez votre fenêtre Propriétés ( F4 ) et assurez-vous que votre test est activé Activée

L’affiche originale l’a fait, mais je suis arrivé ici après ne pas l’avoir fait:

Assurez-vous que [TestClass] est déclaré en haut, de scope publique:

 namespace XYZ.API.Repository.Tests { [TestClass()] public class ClientTests { 

Je recevais le même message et il s’est avéré que j’avais mon projet de test d’unité sur un lecteur réseau. Une fois que je l’ai déplacé localement, ça s’est bien passé. Juste quelque chose à essayer si vous obtenez cette erreur. John

Je viens de le faire manuellement:

Création d’un nouveau projet de bibliothèque de classes C # avec le code suivant:

 namespace SO_Answer { public class Class1 { public void Test() { var k = "Hello"; } } } 

Sauvegardé le projet, puis est allé dans “Fichier-> Ajouter-> Nouveau projet” et a choisi “Projet de test”. Après que VS a créé le projet de test unitaire, j’ai ajouté une référence au projet de bibliothèque de classes que j’ai créé précédemment.

Dans mon test j’ai ce code:

 namespace Unit_Test { ///  /// Summary description for UnitTest1 ///  [TestClass] public class UnitTest1 { ///  ///Gets or sets the test context which provides ///information about and functionality for the current test run. /// public TestContext TestContext { get; set; } #region Additional test atsortingbutes // You can use the following additional atsortingbutes as you write your tests: // Use ClassInitialize to run code before running the first test in the class // [ClassInitialize()] // public static void MyClassInitialize(TestContext testContext) { } // Use ClassCleanup to run code after all tests in a class have run // [ClassCleanup()] // public static void MyClassCleanup() { } // Use TestInitialize to run code before running each test // [TestInitialize()] // public void MyTestInitialize() { } // Use TestCleanup to run code after each test has run // [TestCleanup()] // public void MyTestCleanup() { } #endregion ///  /// The test method 1. ///  [TestMethod] public void TestMethod1() { var f = new Class1(); } } } 

Le seul code que j’ai ajouté était une instruction using et le var f = new Class1(); déclaration. En regardant le runner MSTest, je peux voir TestMethod1 apparaître.

Je ne peux pas penser à une raison pour laquelle vos tests unitaires ne sont pas pris en compte. La seule fois que je l’ai eu, c’est que j’utilisais le runner MSTest pour essayer de visualiser les tests NUnit par erreur. Essayez de partir de zéro.

Cela pourrait être une autre raison. Vérifiez si la solution est en cours d’exécution sur 64 bits. Si oui, changez-le en x86.

Ce doit être un bug et une douleur absolue, d’autant plus que vous devez réactiver chaque méthode de test individuellement. Cependant, un peu de reflection latérale a produit une meilleure solution: renommer la classe de test et reconstruire. Puis renommez-le. Semble travailler. Oups – non ce n’est pas le cas. Renommer la classe fonctionne, mais quand elle est renommée, elle revient aux parameters d’origine. L’astuce consiste à fermer Visual Studio et à supprimer le fichier .vsmdi (méta-données de test Visual Studio). Cela sera réévalué.

Lorsque vous rencontrez ce problème, dans Visual Studio, vous devez créer un projet de test. 1. Sélectionnez Test dans la barre d’outils et choisissez “Nouveau test”. Créez votre projet et à ce stade, créez votre méthode de test. Il devrait fonctionner après ce point.

Pour la postérité: je viens de découvrir que le fait de marquer les tests comme statiques les empêchait d’apparaître silencieusement dans la liste de tests. Apparemment, ce n’est pas permis.

Aucune des autres réponses n’a fonctionné pour moi. J’ai continué à recevoir le message suivant dans la fenêtre de sortie:

 ------ Discover test started ------ ========== Discover test finished: 2 found (0:00:00.1310428) ========== No tests found to run. 

Dans mon cas, le problème ne s’est produit qu’après avoir créé une nouvelle configuration appelée 0-Local. J’ai dû append true à la section pertinente de mon fichier csproj, de sorte qu'il ressemble à ceci:

  true bin\0-Local\  

Avez-vous un fichier VSMDI dans votre solution? Je crois que ce fichier est requirejs (NON VERIFIE).

C’est un problème typique que j’ai aussi rencontré. mais la solution la plus simple que j’ai suivie est de construire le projet une fois et de le reconstruire à nouveau. afin que vous puissiez le résoudre.

Avait ce même problème, mais en lisant les réponses précédentes, tout semblait bien.

Dans mon cas, je venais de lancer la suite de tests apportant une petite modification, de construire la solution et d’essayer de lancer le test. Ne pas aller. J’ai essayé de construire encore quelques fois et j’ai cherché des problèmes que d’autres personnes avaient essayés. Toujours pas aller.

Je tape dans l’une de mes méthodes de test pour append un nouveau et appuyez sur F6 pour créer la solution et cliquez sur Exécuter les tests unitaires.

Bingo! Tout s’est bien passé.

J’utilisais une méthode public TestContext TestContext pour écrire dans la sortie de test et changer la scope en private . Cela a rendu chaque test non détectable. Le ramener au public aidé.

Un autre pour les googleurs utilisant NUnit, en particulier ceux qui ont migré du test MS Unit vers NUnit. Veuillez supprimer le type de projet Guids qui identifie le projet en tant que projet MS Test dans le fichier de projet.

 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 

Si votre code est CLI (c ++ géré) et que votre classe de test hérite d’une classe de base abstraite, assurez-vous que votre classe de test implémente la méthode virtuelle pure de la base. Si vous ne l’avez pas implémenté, le message “Aucun test trouvé pour s’exécuter” peut s’afficher.