Unité d'Adaptateur de Test jeté exception: Impossible de charger un ou plusieurs des types requis
Je suis d'essayer d'exécuter SpecFlow de tests à partir de Visual Studio 2010 Invite de Commande, et j'en suis plutôt obtus message d'erreur:
Unité d'Adaptateur de Test jeté exception:
Impossible de charger un ou plusieurs des types requis. Récupérer la propriété LoaderExceptions pour plus d'informations..
Quelques infos sur mon VS2010 Projet d'installation:
- Windows 7 Entreprise 64 bits (Version 6.1.7601 Service Pack 1 Build 7601)
- Visual Studio 2010 Premium (v10.0.40219.1 SP1Rel)
- À l'aide de Tests Codés de l'INTERFACE utilisateur
- À l'aide de SpecFlow 1.9.0, qui délègue à la CodedUI test API
- MSTest
- .NET v4.0.30319
- Ensemble de la solution est la compilation de 32 bits de code (j'ai des collègues de travail à l'aide de XP encore)
J'ai un post-événement de construction que des copies de quelques DLL fichiers de mon répertoire packages NuGet à la cible dir:
copy $(SolutionDir)packages\SpecBind.1.2.1.71\lib\net45\SpecBind.dll $(TargetDir)
copy $(SolutionDir)packages\SpecBind.CodedUI.1.2.1.71\lib\net45\SpecBind.CodedUI.dll $(TargetDir)
Sans cela, mstest en quelque sorte impossible de charger un certain nombre de SpecFlow assemblées.
Parties pertinentes de Projet de Test de l'Application.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
<section name="specBind" type="SpecBind.Configuration.ConfigurationSectionHandler, SpecBind" />
</configSections>
<connectionStrings>
...
</connectionStrings>
<specFlow>
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
<unitTestProvider name="MsTest" generatorProvider="Specflow.CodedUI.MsTestCodedUiGeneratorProvider, Specflow.CodedUI" runtimeProvider="TechTalk.SpecFlow.UnitTestProvider.MsTest2010RuntimeProvider, TechTalk.SpecFlow" />
<stepAssemblies>
<!-- This attribute is required in order to use StepArgument Transformation as described here;
https://github.com/marcusoftnet/SpecFlow.Assist.Dynamic/wiki/Step-argument-transformations -->
<stepAssembly assembly="SpecFlow.Assist.Dynamic" />
<stepAssembly assembly="SpecBind" />
</stepAssemblies>
</specFlow>
<specBind>
<browserFactory provider="SpecBind.CodedUI.CodedUIBrowserFactory, SpecBind.CodedUI" browserType="IE" />
<!-- For additional details on SpecBind configuration options see the project site. -->
</specBind>
</configuration>
La commande que j'utilisais pour démarrer les tests:
C:\path\to\bin\Debug> mstest /testcontainer:MyTests.dll /test:SpecFlowFeatureName
Loading MyTests.dll
Starting Execution...
Results Top Level Tests
-------- ------------------
Failed ...
Failed ...
Failed ...
...
J'ai été à la recherche haute et basse pour une solution, et tout ce que je conserver est de trouver des références à VS2008 et la désactivation de la Couverture de Code. J'ai VS2010 et la Couverture de Code n'est pas activé dans mon local de paramètres de test.
Journal Des Événements Windows Visionneuse
Après avoir fouiller dans mon Journal des Événements Windows viewer, je suis finalement venu à travers plus d'infos (j'ai entendu des gens se plaindre qu'ils ne peuvent pas trouver une trace de la pile avec cette erreur, regarde dans ton Observateur d'Événements)
The description for Event ID 0 from source VSTTExecution cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
(QTAgent32.exe, PID 6920, Thread 213) Unit Test Adapter threw exception: System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at System.Reflection.Assembly.GetTypes()
at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.GetAssemblyInfo(Assembly assembly)
at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.GetTypeInfo(Type type, Boolean checkAlreadyExaminedType)
at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.ResolveMethods()
at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.Initialize(UnitTestResult result, UnitTestRunner runner, ConsoleOutputRedirector redirector)
at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestRunner.Run(UnitTestElement test, ITestContext testContext, Boolean isLoadTest, Boolean useMultipleCpus)
the message resource is present but the message is not found in the string/message table
Je ne sais pas comment résoudre cette erreur. SpecFlow tests de fonctionner correctement à partir de l'intérieur de Visual Studio lorsque je clique à droite dans un .fonction de chargement du fichier dans l'éditeur et choisissez "Exécuter en SpecFlow des Scénarios..." mais je ne peux pas l'exécuter à partir de la ligne de commande.
Des idées, ou des informations supplémentaires je pouvais poster?
Comme une note de côté, ceci est le résultat de ma question précédente: Comment voulez-vous exécuter SpecFlow scénarios à partir de la ligne de commande à l'aide de MSTest?
Mise à jour #1
J'ai fait un peu plus de fouiller, et trouvé ce blog: MSTest et 64 bits. J'ai vérifié mon local des paramètres de test, et il est de forcer les tests à exécuter en 32 bits.
Maintenant à l'aide de cette commande:
mstest /testcontainer:MyTests.dll /testsettings:"..\..\..\Local.testsettings"
Message d'erreur:
Test method Blah.Dee.Blah threw exception:
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.TestTools.UITest.Extension, Version=11.0.0.0, Culture=neutral, PublicKeyToken=...' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
TestCleanup method Blah.Dee.Blah.ScenarioTearDown threw exception. BoDi.ObjectContainerException: BoDi.ObjectContainerException: Interface cannot be resolved: SpecBind.BrowserSupport.IBrowser.
Mise à jour #2
J'ai supprimé la référence à Microsoft.VisualStudio.TestTools.Qu'uitest.Extension et de l'ajouter en arrière. Nettoyés. Reconstruit. Couru la même commande à nouveau. Toujours la même erreur.
Pour une raison quelconque, il essaie de charger le Microsoft.VisualStudio.TestTools.Qu'uitest.L'Extension de l'assemblée que la Version 11, et j'ai la Version 10 est installé sur ma machine. Je suis en train de traquer où cette version est indiquée afin que je puisse le changer.
Il semble que vous êtes en train de charger SpecBind qui est compilé pour Visual Studio 2012 (
Version=11.0.0.0
). Je soupçonne que vous devez utiliser celui qui se trouve dans net40
au lieu de ceux du net45
, si elles sont disponibles. Aussi, assurez-vous qu'ils soient marqués comme la copie locale pour MsTest avoir les assemblées présent lors de l'exécution des tests.J'ai seulement fait C#/.NET développement depuis environ 6 mois. Savez-vous quelle est la version de SpecBind je devrais être de l'aide, ou où je pourrais trouver cette info? Merci pour le commentaire.
OriginalL'auteur Greg Burghardt | 2014-01-03
Vous devez vous connecter pour publier un commentaire.
Juste au cas où quelqu'un d'autre vient à travers cela, pour moi, c'était parce que la couverture de code a été activé. La désactivation de il a résolu le problème:
http://blogs.msdn.com/b/danielvl/archive/2010/02/16/enable-code-coverage-in-visual-studio.aspx
OriginalL'auteur Chris
Avec l'aide de @jessehouwing du commentaire ci-dessus, j'ai ce problème. J'ai été en cours d'exécution dans deux problèmes.
L'erreur au départ, j'avais référencé a été effectivement causé par mstest de tenter d'exécuter les tests dans un 64bit processus (QTAgent.exe). J'en avais besoin pour s'exécuter comme un processus 32 bits parce que le projet a été compliled 32 bits de code sur mon 64 bits de Windows 7 machine.
Dans Visual Studio 2010:
Dans l'Invite de Commande Visual Studio, exécuter les tests en référencement au niveau local.testsettings fichier généré par Visual Studio:
Le deuxième problème que j'ai eu était de ma faute. Plus tôt, j'ai été jouer avec des tests Codés de l'INTERFACE utilisateur et SpecFlow et avait installé SpecBind, qui a jeté un tas de paramètres dans l'Application.config pour mon projet de test. Ce package NuGet est que pour .NET 4.5, et que nous utilisons .NET 4.0. J'ai enlevé le package NuGet et les paramètres de l'App.config, nettoyés et reconstruit. Cela a résolu ce problème complètement.
Donc en bref, j':
OriginalL'auteur Greg Burghardt
Comme vous pouvez le voir en regardant l'assemblée références exigées par ces paquets (j'utilise un Réflecteur pour cela, mais IlSpy ou JetBrains' DotPeek fonctionnera aussi bien), vous verrez qu'elles dépendent de la v11 version, qui est la version fournie avec Visual Studio 2012. Ils ne peuvent pas être utilisées dans Visual Studio 2010.
Retrait SpecBind permettra probablement de, ou trouver une version qui dépend d'une ancienne version de CodedUI (vous êtes probablement à la recherche d'une plus ancienne version de SpecBind dans ce cas).
Comme pour votre 32-bit problème, vous devriez probablement définir votre projet de la configuration de l'unité centrale de
AnyCPU
, il n'est normalement pas nécessaire de le corriger pour x86, sauf si vous êtes dépendant des méthodes indigènes ou si vous faites référence à d'autres assemblées qui sont spécifiquement configuré pour utiliser x86 comme leur architecture cible.Dans ce cas, le forcer à x86 🙂
OriginalL'auteur jessehouwing
C'est troublant.....
J'ai eu de l'Agent de Test de Visual Studio 2015 installé sur ma machine de test, puisque nous avons été la planification pour l'utiliser, alors que sur ma machine locale, j'ai eu 2013. Les tests couru parfaitement avec MsBuild sur le plan local, que je ne pourrais pas comprendre ce qui a pu arriver, étant donné que j'ai toujours supposé que Microsoft toujours maintenu la compatibilité.
MsBuild sur le serveur de test a échoué à donner des renseignements à ce que les assemblées étaient manquants (j'ai ajouté Newtonsoft.Json juste parce qu'il s'est plaint au début, mais après que je n'ai jamais vu les noms de rien d'autre manquant). Le message d'erreur a été tronqué, stacktrace et debugtrace options n'a jamais travaillé...
Une fois que j'ai installé l'Agent de Test de Visual Studio 2013 sur la machine de test, il a couru comme un charme.
OriginalL'auteur Nabil Shaik