[ 
http://jira.codehaus.org/browse/JBEHAVE-492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=264677#action_264677
 ] 

Paul Hammant commented on JBEHAVE-492:
--------------------------------------

End-users.  In the meantime, if you're trying to do the WebDriver PageFactory 
style of field initialization in the constructor to BasePage (refer 
http://code.google.com/p/selenium/wiki/PageFactory), change from this style:

PageFactory.initElements(driverProvider.get(), this);

.. to this style:

try {
PageFactory.initElements(driverProvider.get(), this);
} catch (Exception e) { 
  // this is OK, the first instance of each page is created by JBehave for the 
purposes of inspecting the methods of steps classes.  The instance itself is 
not needed. Therefore other methods in this class are not called for an 
instance that has skipped the WebDriver PageFactory style field initialization.
}

> ConfigurableEmbedder.addSteps(..) should take classes not instances.
> --------------------------------------------------------------------
>
>                 Key: JBEHAVE-492
>                 URL: http://jira.codehaus.org/browse/JBEHAVE-492
>             Project: JBehave
>          Issue Type: New Feature
>          Components: Core
>    Affects Versions: 3.x
>            Reporter: Paul Hammant
>             Fix For: 3.x
>
>
> public void addSteps(List<Class> steps) {
> }
> ... would be better.
> Why?  There's an instance that's made during the setup of a suite (refer 
> EtsyStories).  If you are running in multi-threaded mode, that instance is 
> **never** used during the running of scenarios.
> In multi-threaded mode, there's a constructor for BasePage that takes a 
> WebDriverProvider.  When it is passed in during the primordial instantiation 
> phase, no WebDriver has been initialized.  We don't want to do that of course 
> because (a) we know this instance is going to be garbage collected and never 
> used, and (b) on SauceLabs at least it would result in browser opening in the 
> cloud then closing (or maybe not closing, but never used; I'm not sure).
> JBehave does not actually need the instance.  I believe this is provable. 
> Instead it could perfectly well use the class definition without the instance 
> ref somehow.   
> Proposal:  Long overdue, I think, but could for 4.x we shift to using 
> class-defs.  Either rework CandidateSteps to hold a Class rather than an 
> instance.  Or further do a away (move the logic elsewhere) with 
> CandidateSteps, and use the POJO Step's class-def directly. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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

    http://xircles.codehaus.org/manage_email


Reply via email to