63 votes

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 c# 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 le résultat suivant sur la ligne d'état de 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.

Note : J'ai créé les tests manuellement (fonctionne pour xUnit.net) au lieu d'utiliser les assistants de Microsoft.

J'ai comparé mon installation MSTest créée à la main à l'installation d'un autre test que j'ai généré à l'aide de l'assistant. ils semblent être suffisamment similaires.

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

Edit 2010-02-25 : Plus d'informations :
J'ai fait un clic droit sur le Éléments de solution et choisissez Ajouter, Nouveau projet, type Projets de test, Documents de test::Modèle de projet de test Visual Studio.

Le test par défaut du nouveau projet "TestMethod1" a été détecté et réussi.
Cependant, mon test n'apparaissait pas ... j'ai donc copié et collé ma méthode de test dans le projet de test par défaut "TestProject1".

Mon test a été détecté dans "TestProject" MAIS pas dans son emplacement d'origine.

J'ai comparé de près les fichiers, l'organisation et les paramètres de "TestProject1" avec mon projet de test créé à la main.

A ce stade, je suis deviner qu'un certain réglage est effectué par le modèle Visual Studio Test Project qui n'est pas facilement détectable.

Pour moi, 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 de Visual Studio.

Remarque : je ne dis pas que je suis contre l'utilisation du modèle de projet de test de Visual Studio ; pour ma part, j'aime comprendre ce qui se passe derrière le rideau, car cela fait de moi un bien meilleur programmeur.

76voto

Dan F Points 7777

Un autre pour les googleurs - celui-ci s'est avéré être mon problème, et c'est embarrassant de ma part. Assurez-vous que votre projet de test est configuré pour être construit dans la configuration de la solution que vous utilisez. Si l'assemblage de test n'est pas construit, VS ne sera pas capable de trouver des tests dans l'assemblage inexistant, et vous vous taperez la tête contre le mur pendant un moment :-)

45voto

Dan F Points 7777

C'est peut-être un peu tard, mais cette question se retrouve bien dans les moteurs de recherche, et je me suis dit que j'allais jeter quelques miettes pour les futurs chercheurs.

Bryan Cook suggère de vérifier les ProjectTypeGuids dans son billet de blog à propos de Création manuelle d'un projet de test MS . Apparemment les GUIDs 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 billet de blog pour plus de détails.

Au cas où l'article de blog disparaîtrait, vous devez ajouter l'élément suivant dans le groupe de propriétés principal du fichier csproj :

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

10voto

Joy Petko Points 91

Une autre idée pour les Googlers. Mon problème était d'essayer de faire fonctionner à nouveau les tests ignorés. Le même message d'erreur MS apparaît si vous retirez l'étiquette Ignorer. Le test n'est pas automatiquement réactivé. Cet article vous explique la dernière étape. http://richallen.blogspot.com/2008/05/ms-test-re-enabling-ignored-tests.html

9voto

Gustavo Mori Points 2649

La solution est simple, même si elle ne devrait pas être nécessaire, si Visual Studio fonctionnait comme il le devrait.

Pour résumer ce que d'autres ont apporté, 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 être construit dans la configuration et la plate-forme que vous utilisez (ex : configuration=Debug et plate-forme=x86).
  • Assurez-vous que votre méthode appartient à une [TestClass] et qu'il est à la fois marqué [TestMethod] et NE PAS utiliser l'attribut [Ignore]
  • Utilisez la vue des tests pour trouver votre test. Test View
  • Ouvrez votre fenêtre de propriétés ( F4 ), et assurez-vous que votre test est activé Enabled

2voto

Jason Evans Points 15732

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";
        }
    }
}

J'ai enregistré le projet, puis j'ai cliqué sur "Fichier->Ajouter->Nouveau projet" et choisi "Projet de test". Après que VS ait créé le projet de test unitaire, j'ai ajouté une référence au projet de bibliothèque de classes que j'ai créé plus tôt.

Dans mon test, j'ai ce code :

namespace Unit_Test
{
    /// <summary>
    /// Summary description for UnitTest1
    /// </summary>
    [TestClass]
    public class UnitTest1
    {
        /// <summary>
        ///Gets or sets the test context which provides
        ///information about and functionality for the current test run.
        ///</summary>
        public TestContext TestContext { get; set; }

        #region Additional test attributes

        // You can use the following additional attributes 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

        /// <summary>
        /// The test method 1.
        /// </summary>
        [TestMethod]
        public void TestMethod1()
        {
            var f = new Class1();

        }
    }
}

Le seul code que j'ai ajouté est l'instruction using et l'instruction var f = new Class1(); déclaration. En regardant l'exécution de MSTest, je peux voir que TestMethod1 apparaissent.

Je ne vois pas de raison pour laquelle vos tests unitaires ne sont pas récupérés. La seule fois où j'ai eu ce problème, c'était parce que j'utilisais le programme d'exécution MSTest pour essayer d'afficher les tests NUnit par erreur. Essayez de recommencer à zéro.

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