La méthode de test n'est pas concluante: le test n'a pas été exécuté. Erreur?

172

J'ai une classe de test et ci-dessous, j'ai publié un exemple de test de la classe de test

namespace AdminPortal.Tests.Controller_Test.Customer
{
    [TestClass]
    public class BusinessUnitControllerTests
    {
        private IBusinessUnitRepository _mockBusinessUnitRepository;
        private BusinessUnitController _controller;

        [TestInitialize]
        public void TestInitialize()
        {
            _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
            _controller = new BusinessUnitController(_mockBusinessUnitRepository);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            _mockBusinessUnitRepository = null;

            _controller.Dispose();
            _controller = null;

        }

        #region Index Action Tests
        [TestMethod]
        public void Index_Action_Calls_GetAllBusinessUnit()
        {
            _mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());

            _controller.Index();

            _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
        }
    }
}

Lorsque je lance le projet, j'obtiens l'écran suivant entrez la description de l'image ici

J'ai vérifié les références et le projet de test a la référence au projet principal. Une idée de la raison pour laquelle les tests ne sont pas en cours d'exécution ou en disant qu'ils n'étaient pas concluants?

Modifier 1:

J'ai vu un article ici et j'ai changé l'architecture de processeur par défaut de mon test en X64, mais cela ne fonctionne toujours pas.

Cybercop
la source
3
C'est un problème connu dans ReSharper. Il existe quelques solutions potentielles ici: stackoverflow.com/questions/12191352/… .
Chris Mantle
3
Avez-vous fait un nettoyage et une reconstruction? Je me souviens qu'il y a une certaine bizarrerie dans VS2010 avec la perte de références aux assemblages après les avoir mis à jour et reconstruits.
Mark Walsh
@ChrisMantle Je l'ai vérifié et changé l'architecture de mon processeur par défaut, mais cela ne fonctionne toujours pas
Cybercop
@MarkWalsh J'utilise VS2012. J'ai toujours nettoyé et reconstruit la solution comme vous l'avez dit, mais ne fonctionne toujours pas
Cybercop
9
cette question est discutée à meta
gnat

Réponses:

133

Juste au cas où aucune des options ci-dessus ne fonctionnerait pour quelqu'un, j'ai corrigé mon instance de cette erreur en remarquant une entrée corrompue dans mon App.Config en raison d'un package nuget manquant dans le projet de test.

Chris Pacey
la source
5
Même problème ici. Ce serait bien si R # faisait remonter l'erreur (erreur lors de l'initialisation du système de configuration) afin de comprendre pourquoi les tests n'ont pas été exécutés.
Geoffrey Hudik
5
Merci, pour moi, j'ai mis les paramètres de l'application au-dessus des configurations par erreur, je l'ai déplacé dans une position appropriée et cela fonctionne.
anIBMer le
3
J'ai ajouté specflow via nuget et il a inséré une entrée dans App.config. Cela a créé tout le problème. J'ai créé un nouveau App.config et ajouté à nouveau la référence et cela a été corrigé. Merci pour l'information.
Vinee
Je peux corroborer que près de deux ans après la publication de cet article, cela semble toujours être une solution viable (j'utilise VS 2015 et ReSharper 9.2).
Steven D.
2
Bingo! Merci Chris. Dans mon cas, c'était une section log4net sans nom de section maching <configSections>.
datps
47

Pour moi, c'était plutôt frustrant, mais j'ai au moins trouvé une solution pour mon cas:

Si votre TestMethod est asynchrone, il ne peut pas être annulé. Il DOIT retourner Task.

J'espère que cela aide quelqu'un :)

Krzysztof Skowronek
la source
37

J'ai eu le même problème avec le resharper et j'ai corrigé cette erreur en modifiant une option:

Resharper => Options => Outils => Test unitaire

J'ai juste dû décocher l'option "Assemblages de clichés instantanés en cours de test"

Elias Platek
la source
2
Cela a réglé le problème pour moi, après avoir examiné une foule d'autres correctifs. J'utilise VS 2013 et R # v8.1
Spikeh
10
Cela n'a pas fonctionné pour moi, j'utilise VS2015 w / Reshaper 10.
Nemeas
Cela m'a permis de travailler avec VS2017 et Resharper Ultimate 2017.2.2 sur un projet de test NETCore.
Tasker
Cela a fonctionné pour moi et je n'ai pas à effacer la compilation pour les tests maintenant. Merci Elias.
PhoenixPan
22

C'était un problème de Resharper. Dans les options Resharper-> Tools-> MSTEST, j'ai décoché le Use Legacy Runner et cela fonctionne maintenant.

Cybercop
la source
61
Je n'ai pas cette option sous Outils-> Test unitaire-> MsTest. (Resharper 9.2.)
cederlof
Je n'ai pas non plus une telle option dans R # 2017.2.
realsonic
Pour moi, l'option était unter Tools-> Unit Testing-> MsTest et décocher a aidé.
Marcel
15

J'avais ce problème, et il s'est avéré être le même que ce problème ici . Cette réponse a résolu le problème pour moi .

  1. Décochez "Créer uniquement les projets de démarrage et les dépendances lors de l'exécution" (Options -> Projets et solutions -> Générer et exécuter)
  2. Dans Configuration Manager, assurez-vous que le projet de démarrage et le projet de test ont coché "Build".

La deuxième fois que j'ai rencontré ce problème, c'était dû à une esperluette dans le chemin du fichier vers le projet où résident les tests. Cela fonctionne bien avec le testeur de ReSharper, mais pas avec celui de dotCover. Supprimez l'esperluette du chemin du fichier.

Il s'agit d'un bogue confirmé avec dotCover.

Canard en caoutchouc
la source
1
A travaillé pour moi. VS2017 avec ReSharper 2017.1.3 :-)
Lars Holdgaard
12

Pour moi, le simple nettoyage et la reconstruction de la solution ont résolu le problème.

Mike Chamberlain
la source
J'avais (accidentellement) annulé les modifications du fichier projet lors du changement de branche dans Git. Lorsque j'ai essayé d'exécuter le test en faisant un clic droit dans la classe (la fenêtre de code était toujours ouverte), il ne fonctionnait pas car il ne faisait pas partie de la solution.
mortb
12

Pour moi, le problème était un fichier XML de paramètres NUnit / ReSharper corrompu (en raison d'une panne de courant inattendue).

Pour identifier l'erreur, j'ai démarré Visual Studio avec cette commande :

devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose

L'examen du fichier a révélé l'exception suivante:

09:45:31.894 |W| UnitTestLaunch                | System.ApplicationException: Error loading settings file
System.ApplicationException: Error loading settings file ---> System.Xml.XmlException: Root element is missing.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.Load(String filename)
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   --- End of inner exception stack trace ---
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   at NUnit.Engine.Services.SettingsService.StartService()
   at NUnit.Engine.Services.ServiceManager.StartServices()
   at NUnit.Engine.TestEngine.Initialize()
   at NUnit.Engine.TestEngine.GetRunner(TestPackage package)
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)

Notez que ce n'est PAS l'app.config du projet de test!

Une recherche rapide sur Google a identifié le fichier suivant comme étant le coupable:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

Il existait, mais était vide. Le supprimer et redémarrer Visual Studio a résolu le problème.

(Utilisation de Visual Studio Professional 2017 v15.3.5 et ReSharper 2017.2.1).

Reyhn
la source
12

J'ai rencontré ce problème dans la mise à jour 3 vs 2017 avec Resharper Ultimate 2017.2

Redémarrer vs ou redémarrer la machine ne peut pas aider.

J'ai résolu le problème en effaçant le cache comme suit:

    Resharper ->options-> Environment ->click the button 'Clear caches'

Mettre à jour:

Il y a un bouton "erreur" (que je trouve dans Resharper 2018) dans le coin supérieur droit de la fenêtre de test.

Si vous cliquez sur le bouton d'erreur, il affiche un message d'erreur qui peut aider à résoudre le problème.

Pour suivre la racine du problème, exécutez Visual Studio en mode journal. En vs 2017, exécutez la commande:

      devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose

Exécutez le test.

Consultez le fichier journal test_log.txt et recherchez «erreur» dans le fichier.

Le fichier journal est d'une grande aide pour trouver l'erreur que vous pouvez résoudre ou vous pouvez envoyer le problème avec le fichier journal à l' équipe de support technique de Resharper .

M. Hassan
la source
7

Je viens de résoudre ce problème également. Cependant, aucune des solutions de ce fil n'a fonctionné. Voici ce que j'ai fait ...

Comme R # ne donnait aucun détail sur les raisons pour lesquelles les choses échouaient, j'ai décidé d'essayer le testeur intégré VS2013. Il a connu exactement le même comportement là où aucun des tests ne s'est exécuté. Cependant, en regardant dans la fenêtre Sortie, j'ai finalement eu un message d'erreur:

Une exception s'est produite lors de l'appel de l'exécuteur 'executor: // mstestadapter / v1': référence d'objet non définie sur une instance d'un objet.

Cela m'a conduit à un autre fil sur SO avec une solution. Croyez-moi, je n'aurais JAMAIS deviné quel était le problème.

J'avais récemment apporté quelques modifications au fichier AssemblyInfo.cs lors de la création d'un package NuGet. L'une des modifications, notamment la spécification d'une valeur de culture d'assembly de «en».

J'ai changé ceci:

[assembly: AssemblyCulture("")] 

pour ça:

[assembly: AssemblyCulture("en")]`. 

C'était ça! C'est ce qui a inexplicablement brisé mes tests unitaires. Cependant, je ne comprends toujours pas pourquoi. Mais au moins, les choses fonctionnent à nouveau. Après avoir annulé ce changement (c'est-à-dire remis la culture sur ""), mes tests ont recommencé à s'exécuter.

J'espère que cela aide quelqu'un là-bas.

mikesigs
la source
1
J'ai changé la culture de l'assemblage et R # a arrêté d'exécuter les tests.
Valentine Zakharenko
Merci! la vérification de la fenêtre de sortie a révélé mon problème, la classe n'était pas publique!
Jony Feldman
7

Dans mon cas, les [Test]méthodes étaient justes private. la honte

pkuderov
la source
1
Bizarre, ReSharper vient de me plaindre que mes méthodes [Test] étaient privées. Doit être une nouvelle fonctionnalité.
Kevin B Burns
7

Mon problème était que je n'avais installé NUnit qu'avec nuget. Je n'avais pas installé NUnit3TestAdapter qui était également requis.

Install-Package NUnit3TestAdapter
Mike Olund
la source
C'est l'un de ces problèmes frustrants qui vous donne peu d'indices sur le problème réel!
Ben Power le
6

Dans mon cas, c'était une erreur que j'ai faite en copiant la chaîne de connexion dans l'app.config .. Je l'avais mise dans la balise configSections!

Il m'a fallu un certain temps pour réaliser que ... merci VS intellisense cependant .. ou était-ce un resharper?

Kcats Wolfrevo
la source
dans mon cas, c'était le résultat d'un changement invalide dans le fichier de configuration
evgenyl
Mon problème a été causé par une mauvaise résolution de conflit Git laissant des informations de changement de tête dans mon fichier de configuration résolu
KiwiSunGoddess
Presque la même chose m'est arrivée, j'avais ajouté une chaîne de connexion à une section appSettings redondante, lorsque j'ai supprimé la section appSettings redondante et déplacé la chaîne de connexion vers les appSettings d'origine, cela fonctionnait.
Sirar Salih
La réponse à propos de app.config corrompu est la même que celle du premier stackoverflow.com/a/21386881/52277
Michael Freidgeim
5

J'ai eu un problème similaire. VS 2010, c # CLR 2 Nunit 2.5.7, il suffit de créer> une solution propre de VS a aidé à résoudre ce problème

Abdul Jabbar
la source
5

Dans mon cas, j'ai créé une méthode de test asynchrone qui a renvoyé void. Le retour Taskau lieu de voidrésoudre le problème.

Neshta
la source
4

Avez-vous récemment ajouté une dépendance DLL? ... comme moi

Je viens de rencontrer le même problème et il était très exaspérant de ne pas avoir d'indice dans la fenêtre de sortie du test ou ailleurs.

La cause était extrêmement stupide: je viens d'ajouter la veille une dépendance à une DLL externe supplémentaire dans un sous-projet, et l'application du projet principal a effectivement été construite et s'est correctement déroulée après le changement. Mais mes tests unitaires sont dans un projet sœur de l'application principale, et avaient donc aussi la dépendance de ce sous-projet modifié où la DLL était invoquée ... pourtant, l'emplacement d'exécution du projet de test n'est pas celui de l'application principale! Ainsi, la modification de la version pour copier la DLL manquante dans le répertoire d'exécution du test a résolu le problème.

Berhauz
la source
4

J'utilise VS2013, ReSharper 9.1 avec l'extension MSpec de ReSharper et Moq. J'ai rencontré la même erreur «non concluante».

Il s'est avéré que celui de mes Mock de Moq n'était pas initialisé, seulement déclaré. Ceux qui ont initialisé tous les tests ont été exécutés à nouveau.

Espen Ekvang
la source
4

Dans mon cas, j'ai eu cette erreur à cause du mode 'Release' où la construction du projet UnitTests était simplement désactivée. Le retour en mode «Débogage» l'a corrigé.

Il est vraiment surprenant que ReSharper ne puisse rien dire au cas où il ne trouverait pas du tout la bibliothèque UnitTests. Sérieusement, c'est dommage;)

J'espère que cela aidera quelqu'un

RR-Boule de feu
la source
4

Dans mon cas, tout tests de certains projets de test dans une solution ont commencé à ne pas s'exécuter après avoir ajouté de nouveaux projets. Utilisation de VS 2017 avec ReSharper 2017.1.2 ici.

Tout d'abord, assurez-vous de ne pas perdre de temps à supposer que votre problème est lié à ReSharper. Il est facile de supposer qu'il y a quelque chose qui ne va pas avec ReSharper si vous utilisez ses fonctionnalités de test unitaire, y compris Unit Test Explorer . Ouvrez l' Explorateur de tests de Visual Studio dans le menu Test et essayez Tout exécuter . "L'avantage supplémentaire de cette opération est que la fenêtre de sortie affichera un message d'erreur qui pourrait vous orienter dans la bonne direction. Si vous remarquez que le même ensemble de tests ne sont pas exécutés, il est alors prudent de supposer que le problème provient de Visual Studio et non de ReSharper.

J'ai fini par supprimer et rajouter l'une des plates - formes de solutions actives , Any CPU , dans Configuration Manager . Ce faisant, après avoir enregistré mes modifications et rouvert la solution, tous les tests ont recommencé à s'exécuter.

Je crois qu'il y avait une entrée de configuration inattendue dans le fichier de solution lorsque j'ai ajouté de nouveaux projets et en recréant l'une des plates-formes, il s'est corrigé. J'ai essayé de différer, mais il était difficile de dire ce qui avait changé pour causer le problème.

wonster
la source
Dans mon cas, j'ai eu une faute de frappe idiote dans app.config <AppConfig> au lieu de <AppSettings>. J'adore ReSharper, mais ils ont VRAIMENT besoin de travailler sur leurs messages d'erreur!
MichaelMilom
4

Pour ceux qui rencontrent ce problème pour mon projet de test .NET Core 2.0dans le Visual Studio 2017 Community (v15.3 3). J'ai aussi eu ce bug en utilisant JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346- il y a un bug que j'ai posté.

JetBrains a conseillé de créer un nouveau projet de test à partir de zéro pour le reproduire. Quand j'ai fait cela et que les tests fonctionnent correctement, j'ai trouvé la raison du problème:

  • Supprimez ceci de votre *.csprojfichier:
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}"

Quand j'ai fait cela, les tests ont commencé à fonctionner correctement.

Dmitry Pavlov
la source
Dmitry, merci, ça m'a aidé. Pouvez-vous expliquer ce qu'est ce service?
Vladimir Melekh
@VladimirMelekh consultez ce github.com/Microsoft/vstest/issues/472
Dmitry Pavlov
3

J'utilise VS2010, NUnit 2.6.3 (bien qu'en interne ReSharper indique qu'il utilise 2.6.2?), ReSharper 7.7.1 & NCrunch 2.5.0.12 et fonctionnait dans le même "... test n'est pas concluant ..." avec NUnit, mais NCrunch a dit que tout allait bien. Pendant la majeure partie de la journée, NUnit et NCrunch étaient en synchro pour s'entendre sur les tests satisfaisants et ceux qui devaient être refactorisés, puis quelque chose s'est passé que je ne comprends toujours pas, et pendant un moment, NCrunch a déclaré que j'avais des tests échoués (mais les parcourir leur a montré pass), puis a décidé qu'ils fonctionnaient tous, et NUnit a commencé à se plaindre de tous mes tests, sauf un avec le même message ".. le test n'est pas concluant ..." que j'ai de nouveau pu passer à une passe même si NUnit a continué pour le montrer comme "non concluant").

J'ai essayé plusieurs des suggestions ci-dessus en vain, et j'ai finalement fermé VS2010 et rouvert la solution. Voila, maintenant tous mes tests sont à nouveau heureux, et NCrunch & NUnit rapportent à nouveau les mêmes résultats. Malheureusement, je n'ai aucune idée de ce qui a changé pour les désynchroniser, mais la fermeture et la réouverture de VS2010 semblent l'avoir corrigé.

Peut-être que quelqu'un d'autre se heurtera à cela et pourra utiliser cette solution simple (si finalement insatisfaisante puisque vous ne savez pas quel est le vrai correctif).

delliottg
la source
3

J'ai eu ce même problème. Le coupable était une référence externe non compatible avec les paramètres de construction de mon projet. Pour résoudre, j'ai cliqué avec le bouton droit sur le projet-> propriétés-> build-> Platform Target-> changer de Any CPU à x86.

Le * .dll particulier avec lequel je travaillais était System.Data.SQLite. Ce * .dll particulier est codé en dur pour un fonctionnement 32 bits. Le paramètre "Any CPU" a tenté de le charger en 64 bits.

sorbier
la source
La non-concordance des cibles de plate-forme peut également se produire avec des références à d'autres projets au sein de la même solution.
Chaquotay
3

Ma solution:

NUnit 3.2.0 a quelques problèmes avec Resharper - rétrograder vers 2.6.4:

update-package nunit -version 2.6.4
David McEleney
la source
3

Dans mon cas, ma méthode de test était privée, je l'ai changée en public et cela a fonctionné.

Andrew Burns
la source
3

Causé par un fichier App.Config manquant (non corrompu). L'ajout d'un nouveau (Ajouter -> Nouvel élément ... -> Fichier de configuration d'application) l'a corrigé.

AnotherFineMess
la source
3

J'ai eu le même problème: il était lié à la version de compatibilité entre NUnit 3.5 et Resharper 9.2, car il a été résolu en rétrogradant de NUnit 3.5 à 2.6.4. Cela a fonctionné pour moi. bonne chance.

Ali Golgol
la source
J'avais un assemblage de test compilé avec la version 3.6.1, et mon assemblage de test principal était compilé avec la version 3.7.1. Rétrogradé à 3.6.1 et maintenant c'est tout bon.
Tom
C'était le cas pour ReSharper 2017.3.2 et NUnit 3.11. Voir le commentaire de nunit github.com/nunit/nunit/issues/3086#issuecomment-466988760
Puterdo Borato
3

Si vous utilisez xUnit, j'ai résolu le problème d'installation du xunit.running.visualstudiopackage. (utilise actuellement xUnit 2.3.1et VS17 Enterprise 15.3.5)

Alessio Di Salvo
la source
3

J'avais le même problème pour exécuter n'importe quel test en utilisant le framework NUnit. «Non concluant: test non exécuté» Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130

RÉSOLU Ajout d'une dépendance de projet à Microsoft.NET.Test.Sdk

Jules César
la source
N'a pas aidé dans mon cas
Dmitry Avtonomov
2

Pour ceux qui sont pressés pour l'exécution des tests, j'ai dû utiliser l'explorateur de tests VS 2017 pour exécuter des tests;

entrez la description de l'image ici

entrez la description de l'image ici

Teoman Shipahi
la source
2

Cette erreur s'est produite avec Visual Studio 2017 et la version de réaffectation 2018.2.3, mais le correctif s'applique aux versions de Visual Studio 2019 à.

Le correctif, pour que les tests fonctionnent dans Resharper, consistait simplement à mettre à jour la dernière version de Resharper (2019.2.1) au moment de la rédaction.

Boris
la source
1

J'ai eu exactement le même problème et rien n'a aidé.

finalement j'ai vu que j'avais une incompatibilité dans mes espaces de noms du projet d'unité et du projet de test unitaire.

L'espace de noms de mon projet d'unité est unit.project et le projet de test s'appelait unit.project.tests mais l'espace de noms par défaut du test était le même que l'unité, les deux étaient unit.project.

Une fois que j'ai mis à jour les espaces de noms pour qu'ils soient différents (un espace de noms pour chaque projet), tout a fonctionné!

argent
la source
Ouais, j'ai eu le même problème. L'idée pourrait être de rendre le projet de test et le projet cible identiques pour faciliter l'accès, mais cela se visse avec le lanceur de test et produit ce problème à partir de l'OP.
atconway