JBehave
  1. JBehave
  2. JBEHAVE-777

A tree-based story runner that separates creation of performable steps from execution

    Details

    • Type: New Feature New Feature
    • Status: Reopened Reopened
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: 4.0
    • Component/s: Core
    • Labels:
      None
    • Number of attachments :
      0

      Description

      In 3.x the StoryRunner creates and executes the steps for each story and scenario while keeping state.

      We want to separate the creation of performable steps from their execution and build a tree of performable objects. The state should not be held any more as a member variable but in a shared run context.

      The result of execution of the performable tree should be serialisable and consumable by any reporting/UI layer independent of the StoryReporters.

        Activity

        Hide
        Brian Repko added a comment -

        YES! I've had this design drawn up for quite a while - its actually the same way that JUnit and TestNG run but with hard-coded notions of "Class" as the first level of the tree and "Method" as the next level of the tree. We could have tree(s) for parallel processing, with Stories/Story/Scenario and potentially subnodes for Example/GivenScenario.

        We should talk - I can scan some of my drawings and attach.

        Show
        Brian Repko added a comment - YES! I've had this design drawn up for quite a while - its actually the same way that JUnit and TestNG run but with hard-coded notions of "Class" as the first level of the tree and "Method" as the next level of the tree. We could have tree(s) for parallel processing, with Stories/Story/Scenario and potentially subnodes for Example/GivenScenario. We should talk - I can scan some of my drawings and attach.
        Mauro Talevi made changes -
        Field Original Value New Value
        Status Open [ 1 ] In Progress [ 3 ]
        Hide
        Mauro Talevi added a comment -

        Hi Brian,

        committed and pushed a first refactor in jbehave-4.x branch (https://github.com/jbehave/jbehave-core/tree/jbehave-4.x).

        Introduced a PerformanceTree in place of StoryRunner. The behaviour is backward compatible with exception of CrossReference which implicitly relies on the step generation and execution to be done at same time. In any case, removing CrossReference is one of the objectives of this refactor as the result tree will be serialisable.

        Show
        Mauro Talevi added a comment - Hi Brian, committed and pushed a first refactor in jbehave-4.x branch ( https://github.com/jbehave/jbehave-core/tree/jbehave-4.x ). Introduced a PerformanceTree in place of StoryRunner. The behaviour is backward compatible with exception of CrossReference which implicitly relies on the step generation and execution to be done at same time. In any case, removing CrossReference is one of the objectives of this refactor as the result tree will be serialisable.
        Mauro Talevi made changes -
        Fix Version/s 4.0 [ 18486 ]
        Fix Version/s 4.x [ 18279 ]
        Mauro Talevi made changes -
        Component/s Core [ 11086 ]
        Mauro Talevi made changes -
        Status In Progress [ 3 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Mauro Talevi made changes -
        Status Resolved [ 5 ] Reopened [ 4 ]
        Resolution Fixed [ 1 ]

          People

          • Assignee:
            Mauro Talevi
            Reporter:
            Mauro Talevi
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated: