2010-07-31 12 views
2

Je suis nouveau sur BDD, et en utilisant SpecFlow, j'essaie de mettre au point une méthodologie efficace, organisée et maintenable (à utiliser dans ASP.NET MVC). Les principaux domaines que je dois améliorer sont:SpecFlow/BDD avec ASP.NET MVC

  • Regroupement des étapes (dans des fichiers étape)

  • Réutiliser objets de test (comme il est si facile dans les tests unitaires en héritant des classes de base de test, etc.)

  • structure des dossiers

en matière de regroupement, nous allons prendre un scénario CRUD typique. Par exemple:

  • un dossier pour chaque « zone » dans mon projet public, par exemple, la gestion du site

  • un dossier de fonctionnalité et le dossier de l'étape dans chacun de ces

Et puis, à l'intérieur de ces dossiers, j'ai un fichier de caractéristiques couvrant l'ensemble de l'expérience CRUD pour une entité donnée, par exemple NewsItem. Je suis allé de cette façon afin que je puisse réutiliser des objets et le NewsController dans mes étapes. Mais cela signifie que les fichiers d'étapes sont assez volumineux pour couvrir tous les types de possibilités d'entrée valides et invalides et qu'il est très difficile de suivre un scénario jusqu'au bout. Mais si je ne le fais pas, je ne peux pas réutiliser les étapes qui peuvent s'appliquer à plusieurs scénarios dans l'ensemble du processus CRUD.

Je comprends ce qui est très subjective, et je ne suis pas peur d'être submergé par un certain nombre de différentes idées et perspectives - c'est ce que je veux: P

ainsi que vos propres opinions & préférences, des liens vers Les blogs et les livres seraient bons.

Merci

personne Désolé Nick

Répondre

3

a répondu à cette depuis des siècles. Si cela vous est toujours utile, cela pourrait vous aider.

Je garde mes pas à un niveau très élevé: voir cette question Imperative and declarative steps in Rspec

pas de groupe I par domaines de préoccupation. Imaginez-vous en train de vous connecter et d'effectuer une action, puis de vous déconnecter à nouveau. Ou peut-être rentrer à la maison pour la journée. Tout ce que je pourrais faire en une session devient un sujet de préoccupation. Par exemple, si je suis propriétaire d'une animalerie, je pourrais avoir des fichiers d'étapes pour: manipuler des animaux en stock, manipuler des accessoires et d'autres actions, vendre des articles, suivre le profit, etc. comme WebDriver. Cela signifie que si une étape fait plusieurs choses sur l'interface utilisateur, il y a un écran ou une page qui gère toutes ces actions.

J'utilise souvent des constructeurs en cascade pour permettre à mon harnais BDD (dans mon cas, un ancien NUnit) de créer ces étapes et scénarios pour moi.J'ai écrit un petit outil d'automatisation et vous pouvez voir certaines de ces techniques dans ses exemples:

http://code.google.com/p/wipflash/source/browse/Example.PetShop.Scenarios/PetRegistrationAndPurchase.cs

Je n'ai pas encore beaucoup gâché avec SpecFlow, mais je pense qu'elles pourraient être utiles pour vous . C'est le même modèle de design que j'ai aussi utilisé avec JBehave ou Fitnesse.NET et FitSharp.

Bonne chance! Il y a un groupe BDD http://groups.google.com/group/behaviordrivendevelopment qui pourrait vous aider si vous avez besoin de plus d'informations.