No, no problem seen, and thanks for the quick reply.

 

The reason I ask is just to know if the state of the steps class instance is 
guaranteed to be available during the whole scenario.

We normally use a thread local singleton context manager to hold the state of 
the scenario (cleared before each scenario is executed) in order to have the 
scenario state available to all step implementations executing in the same 
thread.

But sometimes it is just cleaner, I think, to store state locally in fields in 
the step implementation class, as long as all the steps that need the info are 
located in the same class.

 

Also, then I assume that the step class instances may be pooled and reused 
after a scenario has finished?

If so, we have to be careful to not let the state leak over to the next 
scenario that happens to use that same instance.

 

Or are steps class instances always recreated for each scenario execution?

 

I’ll have to dig into our JBehave configuration a bit more to learn how this 
can be set up in our case.

 

 

From: Mauro Talevi [mailto:mauro.tal...@aquilonia.org] 
Sent: den 7 september 2014 14:52
To: dev@jbehave.codehaus.org <mailto:dev@jbehave.codehaus.org> 
Subject: Re: [jbehave-dev] Step Class Instance Reuse?

 

That depends how you configure your steps factory ... 

Sanity dictates that you ensure that the steps instances are unique (e.g. using 
the singleton mode of the dependency injection containers). 

Assuming this is true, then yes, the steps will always be executed from the 
same methods in the same class. 

Are you experiencing anything that may contradict this behaviour?

On 07/09/2014 14:46, Anders wrote:

Is it guaranteed that steps implemented in the same class will reuse the same 
step class instances when executed within the same scenario?

 

Example:

 

Scenario: My scenario

Given step 1

When step 2

Then step 3

And step 4

 

Let’s say that step 1 and 2 are implemented in class A, and step 3 and 4 are 
implemented in class B.

 

When this scenario is run, is it guaranteed that step 1 and 2 will be executed 
in the same instance of class A, and step 3 and 4 will be executed in the same 
instance of class B?

 

 

 

 

Reply via email to