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.

Je commence à penser que c'est à cause de ma machine à processeur x64, et mes collègues de travail et les serveurs de production en cours de processeurs x86 (finalbuilder.com/Support/Forums/aft/12817.aspx). Besoin de faire une pause pour un Jimmy Johns sandwhich...
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