web-dev-qa-db-fra.com

Les tests unitaires de resharper ne s'exécutent pas

J'essaie de commencer à écrire des tests unitaires dans un projet. J'ai d'abord écrit le createTest et l'ai essayé. Ce test a réussi et j'ai commencé à écrire mes autres tests.

Maintenant, tous mes tests disent simplement "Test non exécuté". Cela se produit à la fois lorsque j'essaie d'exécuter tous les tests en même temps et lorsque j'exécute un seul test.

https://github.com/Requinard/OperationOctopus/tree/UnitTest

Jusqu'à présent, je n'ai trouvé que des personnes utilisant NUnit. Nous utilisons le framework de test Microsoft par défaut, avec resharper exécutant les tests.

    [TestMethod]
    public void CreateTest()
    {
        Init.Initialize();
        // set up
        UserModel user = new UserModel();

        user.Address = "Testing Street 1";
        user.Email = "[email protected]";
        user.Level = 2;
        user.Password = "test";
        user.RfiDnumber = "00d0wad0aw";
        user.Telephonenumber = "0638212327";
        user.Username = "testcaseuser";

        Assert.IsTrue(user.Create(), "Cannot write user to database");

        test_user = user;
    }

    [TestMethod]
    public void ReadTest()
    {
        Init.Initialize();
        // set up
        UserModel user = getTestUser();

        Assert.AreEqual(user.Email, test_user.Email, "Reading returned an unexpected result");
    }

    [TestMethod]
    public void AlterTest()
    {
        Init.Initialize();
        UserModel user = getTestUser();

        user.Email = "[email protected]";

        Assert.IsTrue(user.Update(), "Failure during updating");

        user.Read();

        Assert.AreNotEqual(user.Email, test_user.Email);
    }

    [TestMethod]
    public void DestroyTest()
    {
        Init.Initialize();
        UserModel user = getTestUser();

        Assert.IsTrue(user.Destroy(), "Could not destroy user");
    }

Les tests ci-dessus feront resharper dire "Test non exécuté"

Je viens d'essayer d'exécuter les tests sur mon ordinateur portable. Ils ont fonctionné sans aucune modification du code et le test s'est terminé instantanément. Cela m'amène à penser que j'ai affaire à une configuration défectueuse quelque part.

23
Samyn

Je pense que le redémarrage de l'ensemble du système a peut-être été un peu prématuré. J'ai trouvé que lorsque cela se produit, il vous suffit de redémarrer Resharper.

Je le fais généralement à partir de la fenêtre de commande dans Visual Studio, il vous suffit de taper ces commandes l'une après l'autre

Resharper_Suspend
Resharper_Resume

cela résout généralement le problème pour moi et ne nécessite pas de rouvrir la solution.

Si cela échoue, vous pouvez effacer les caches de resharper. Des informations peuvent être consultées ici sur la façon de le faire.

voici comment le faire depuis le menu VS

43
BastanteCaro

Assurez-vous que vous ne faites pas ce que je faisais et oubliez complètement que la solution est en mode release avec un projet de test configuré pour construire uniquement en mode debug ;-)

6
Ted

Il y avait un bogue dans ReSharper 2017.3.1, qui a été corrigé dans 2017.3.2: https://blog.jetbrains.com/dotnet/2018/02/01/resharper-ultimate-2017-3-2- correction de bogue /

Vous pouvez mettre à jour à l'aide de ReSharper> Help> Check for Updates.

Vous pouvez voir si vous avez eu la même erreur en activation des journaux . Voici ce que j'avais:

--- EXCEPTION #2/2 [LoggerException]
Message = “Passed version string '2.1.101' doesn't look to be a valid .net core sdk version”

Et éventuellement:

|W| UnitTestLaunch | System.NullReferenceException: Object reference not set to an instance of an object.
at JetBrains.ReSharper.UnitTestProvider.nUnit.v30.NUnitServiceProvider.GetRunStrategy(IUnitTestElement element)
at JetBrains.ReSharper.UnitTestProvider.nUnit.v30.Elements.NUnitElementBase.GetRunStrategy(IHostProvider hostProvider)
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.BuildStage.CollectProjectsToBuild()
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.BuildStage.Run(CancellationToken token)
at JetBrains.ReSharper.UnitTestFramework.Launch.UnitTestLaunch.RunStage(Object stageObject)

Mon projet utilise NET471 et j'exécute ReSharper 2017.3.1 dans Visual Studio 15.6.27428.2005

5
Christian Rondeau

Cela m'est également arrivé et j'ai trouvé la raison ici: http://www.henrikbrinch.dk/Blog/2012/02/15/Making-Resharper-testrunner-work-in-64-bit =

Ce correctif est en fait sévère, et ce que j'ai fait est de changer la configuration: VS2015 -> Resharper -> Options -> Unit Testing -> Default platform architecture - Force tests to run in 32-bit process

J'espère que ceci vous aidera

4
daviddv

Cela m'est arrivé aujourd'hui et aucune des suggestions ci-dessus (effacement du cache, redémarrage de VS, suspension/reprise du resharper) n'a fonctionné.

Cependant, dans l'onglet Unit Test Sessions sous Error, j'ai pu voir que j'avais une TypeLoadException qui m'a permis de localiser le problème. enter image description here

1
Dr. ABT

Je rencontre régulièrement cela parce que je travaille sur un projet avec plusieurs branches et que je bascule entre elles sans arrêter Visual Studio. Cela confondra parfois ReSharper et je n'aurai plus les options NUnit sur certains projets.

Dans Visual Studio Community 2017 avec ReSharper 2018.2, la première chose que j'essaie est de décharger le projet où le lanceur de test NUnit n'est pas disponible. Parfois, c'est la seule étape nécessaire.

Ensuite, j'utilise ReSharper-> Options-> General -> 'Clear caches' qui nécessite un redémarrage VS.

Ensuite, je décharge et recharge à nouveau le projet qui se comporte mal.

Cela résout le problème.

0
Naylor