Hi Mauro

OK have proved this out by providing my own implementation of the InstanceStepsFactory, maintaining an ArrayList of ordered steps classes in the constructor as well as the Map. So instead of returning the map's keyset (which essentially randomises the order), we return the ordered list (only used for the return value of stepsTypes). This then works as per 3.4.3.

So probably nothing to do with "Lazy Loading" - just a side effect of the Map implementation of the steps list.

However I'd like to check if this was a deliberate change, i.e. whether this means that you now actively discourage multiple @BeforeStories steps (in multiple Steps classes) or that you are trying to discourage any interdependencies (in terms of invocation order) between them as "best practice"? Otherwise, imho I'd view this (random ordering) as a regression.

Best regards

Simon

-------- Original Message --------
Subject:        Re: [jbehave-user] Lazy loading with 3.5.4
Date:   Thu, 22 Dec 2011 19:45:17 +0100
From:   Mauro Talevi <[email protected]>
Reply-To:       [email protected]
To:     [email protected]



Hi Simon,

you can always provide your own impl of InjectableStepsFactory.  The
main method returns the instances of the CandidateSteps classes, which
you can instantiate in the order you need.

Cheers

On 22/12/2011 18:41, Simon Kent wrote:
 We are currently using JBehave 3.4.3 and considering an upgrade to
 3.5.4. However one of the improvements (JBEHAVE-534) adds lazy loading
 of steps classes, which makes the order of loading less deterministic.
 This becomes an issue when we use generic steps classes with
 @BeforeStories annotations which we'd like to assume are actioned up
 front (and hence currently defined earlier in the list of steps
 classes). Can you recommend any way around this?

 e.g. with a list of steps : myGenericSteps, myStorySteps
 with 3.4.3 these were executed in this order
 with 3.5.4 they reverse

 myGenericSteps :
 @BeforeStories
 public void before1() {
 // want to execute this first
 }

 myStorySteps:
 @BeforeStories
 public void before2() {
 // want to execute this second
 }
 @Given
 ..
 @Then
 ..
 etc




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

   http://xircles.codehaus.org/manage_email





Privileged or confidential information may be contained in this message. If you are not the addressee of this message please notify the sender by return and thereafter delete the message, and you may not use, copy, disclose or rely on the information contained in it. Internet e-mail may be susceptible to data corruption, interception and unauthorised amendment for which Gresham does not accept liability. Whilst we have taken reasonable precautions to ensure that this e-mail and any attachments have been swept for viruses, Gresham does not accept liability for any damage sustained as a result of viruses. Statements in this message that do not relate to the business of Gresham are neither given nor endorsed by the company or its directors. Gresham Computing plc Registered in England and Wales. Company No. 01072032 Registered Office: Sopwith House, Brook Avenue, Warsash, Southampton. Hants. SO31 9ZA Further information about Gresham Computing can be found on our website: www.gresham-computing.com

Reply via email to