You're right, currently if there are no steps in a scenario the given stories are not executed as they are seen as preconditions to some steps in the scenario.

We could make this behaviour configurable though. Currently there no workarounds other than adding at least one step.

Note that you can have the given stories at scenario as well as at story level.

On 12/09/2013 14:23, Hans Schwäbli wrote:
I discovered that this kind of usage does not work in JBehave 3.8:
GivenStories:
  stories/login_story.story,
  stories/logout_story.story,
  stories/login_story.story
Scenario: Login after logout to verify if re-login works
Only if I add a Given/When/Then, the scenario "Login after logout" is executed. But I inteded to just compose my scenario from other stories, not adding anything to it. Well I could enter a pseudo step, then the scenario would be executed (but this smells bad to me). It seemed to me to be the most effective way not to repeat myself. Or is there another way?


2013/9/12 Hans Schwäbli <[email protected] <mailto:[email protected]>>

    Unfortunately there seems to be a bug concerning GivenStories in
    4.0-beta-3. It did not work with that version. But it works with
    JBehave 3.8.0.


    2013/9/12 Hans Schwäbli <[email protected]
    <mailto:[email protected]>>

        Great, thank you for that answer.
        I was looking for something like "Given Scenario", but this is
        not the JBehave concept as it seems.
        The scenarios seem not to be intended to be independent from
        each other. They seem to be run always in sequential order.
        So I can re-model this to achieve my goal and maybe I have to
        implement logic to optimize execution.

        ---------- Forwarded message ----------
        From: *Hans Schwäbli* <[email protected]
        <mailto:[email protected]>>
        Date: 2013/9/11
        Subject: Transitive Scenarios
        To: [email protected] <mailto:[email protected]>


        I am new with JBehave. When writing my first three login
        tests, I discovered that they depend on each other.

          * Scenario 1 "Positive Login": User can login and is on
            homepage then.
          * Scenario 2 "Positive Logout": User can logout successfully.
          * Scenario 3 "Positive Re-Login": User can login after logout.

        Logically this can be modelled as dependencies: Scenario 3
        depends on scenario 2 which itself depends on scenario 1. To
        test all three scenarios it would be enough to run just
        scenario 3.
        These are transitive scenarios, very much like transitive
        dependencies in build tools like Maven. The application of
        transition differs (here tests, there jar-files), but the
        topic is logically the same.
        So I thought, hey lets do it like this with JBehave:

            Scenario: Positive Logout
            Given Positive Login

        But JBehave does not understand my intention with "Given
        Positive Login", it prints a warning in the Eclipse editor.
        As it seems I could define combined steps and use them in the
        story. But that would not be equivalent to be able to just
        write "Given Positive Login" since the steps would not be
        documented in the story but in the source code.
        Is this possible, to use "Given" in such a way that it refers
        to another scenario in a story? If not, what do you think of
        that idea?
        I also wonder about declaring dependencies like in TestNG for
        scenarios, so that test run execution time is optimized and
        the test result can be easier analysed.
        If transitive scenarios are possible, JBehave could optimize
        the execution time. So for instance only scenario 3 would be
        run (Positive Re-Login) and since it refers to scenario 2 and
        scenario 2 refers to scenario 1, there could also be results
        collected for all three scenarios. But does JBehave work this
        way or can be made to work like it?
        My questions are not about re-using source code but re-using
        scenarios, modelling scenarios by declaring transitive
        dependencies between them and expecting that JBehave runs them
        in an optimized way, which means: no run if dependent scenario
        failed or no run if already run as a dependency of another
        scenario which already run.
        Its a bit complicated, but I hope you understand what I mean.




Reply via email to