Hi Paul,

thanks for sharing your thoughts. Overall, I would tend to agree with what you're saying.

By experience, GivenStories tend to be more used and more readable as preconditions.

Composite steps are more about providing a "zoom out" effect once the composite steps have been defined, as you rightfully point out not just as a Given.

Feel free to provide a patch with a doc page with these best practices.

Cheers

On 23/10/2013 12:05, Paul Barton wrote:
Hello All,

I am just curious on how the jBehave community decides when and where to use GivenStories and Composite Steps, in order to set a best practice for my team...

At least there seems to be some confusion in my team about where and when to use either GivenStories or a composite steps (@Composite annotation) (ie. some think its good to only use only GivenStories and others only want to group every test case into a composite step)

My personal belief is that Composite Steps are there solely to provide a declarative semantics, over that of imperative semantics of a block of steps...

And that GivenStories are there to allow a Software Engineer in Test to reuse isolated story files as preconditions in their stories...

And that both should be used given some best practices...

Hence a best practice I was thinking would be the following:
- CompositeSteps should only be used when attempting to provide a declarative step for the dsl layer, only after all imperative steps have been written for the corresponding page object - Do not create composite steps for items that will not benefit the readability of the step (too many parameters can hurt the readability of a step, use GivenStories here) - Do not create composite steps for every one off test case, only create when you have a high impact for re-usability - Do not restrict the use of CompositeSteps to a precondition (@Given), as it can be used to group actions (@When) or post-conditions (@Then) as well - Stories called by GivenStories should be isolated (otherwise you may end up having to manage the dependencies, ie story C uses story B uses story A uses etc...) - GivenStories should be used when there is a complex set of preconditions for a story

Are my thoughts wrong or do you have some best practices to add or share regarding when to use these features?

Cheers,
:Paul



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to