2010-08-12 17 views
7

J'ai configuré Specflow pour cibler le cadre MSTEST (au lieu de NUnit) en spécifiant comme ceci dans le app.config de ma bibliothèque de classes « spécifications »:Comment obtenir VS2010 pour reconnaître mes mstests générés par SpecFlow?

<configSections> 
    <section name="specFlow" 
    type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/> 
</configSections> 

<specFlow> 
<unitTestProvider name="MsTest.2010" /> 
</specFlow> 

donc une fois qu'il est en place, je peux voir que mes appareils de test sont produits correctement par l'outil personnalisé Specflow, avec correcte TestClassAttribute() et les méthodes, etc:

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.3.3.0")] 
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 
[Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()] 
... 

la classe specs construit, mais maintenant je ne peux pas exécuter les tests à l'aide du test -> exécuter - -> Tous les tests dans la solution dans Visual Studio 2010 sur ma boîte vista 64. Pourquoi VS ne reconnaît-il pas que ces tests sont valides?

Répondre

4

j'ai dû recréer le projet en tant que Test Project et non pas seulement un Class Library - parce que j'avais commencé avec le développement NUnit et SpecFlow, j'avais créé une bibliothèque de classes de vanille pour tenir mes specs qui avait les attributs NUnit décoré. J'ai pensé que je pouvais simplement changer le app.config de ce projet existant pour pointer sur le framework le plus avancé et arrêter d'utiliser NUnit, mais VS2010 n'a jamais reconnu les tests, malgré la bonne création des stubs par l'outil personnalisé de specflow.

Alors ... J'ai ajouté un nouveau Test Project à ma solution, déplacé tout mon code de spécification à ce nouveau projet, puis recompilé, et alto, VS2010 reconnaît les tests. Je suis sûr qu'il y a un GUID qu'il cherche dans le XML du fichier .csproj ou quelque chose qui lui dit de câbler le cadre de test, mais je n'ai pas creusé si loin.

Espérons que cela aide quelqu'un.

8

Comme par Dror Helper et Alex Duggleby vous voulez ajouter la ligne suivante dans votre fichier .csproj:

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

Ajouter après l'élément FileAlignment et recharger le projet. Il devrait maintenant être un projet de test MS et vous obtenez la fonctionnalité de test MS dans le contexte de ce projet. Les Guids signifie:

  • {3AC096D0-A1C2-E12c-1390-A8335801FDAB} - Test de projet
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C# Bibliothèque de classes
-1

Pour changer votre modèle de projet bibliothèque de classes dans un projet de test, modifier le .csproj et ajoutez la ligne suivante:

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

au premier élément de groupe immobilier:

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