Olmo,

try to extend your abstract class from InjectableEmbedder, as we did with TraderAnnotatedEmbedder example.


cheers

On 22/12/11 07:45, Olmo Rigolo wrote:
Hi all,


unfortunately I'm having problems wirh the @RunWith(JiraAnnotatedPathRunner.class) and the maven goal.

I have concrete scenario classes that assemble the stories from jira like:

@UsingSteps(instances={StorySteps.class})
@UsingStories(stories={"PRMPLI-1080", "PRMPLI-1081"})
public class Sprint12Scenarios extends ZxConfiguredEmbedder {

}

which extends the ZxConfiguredEmbedder, that runs with JiraAnnotatedPathRunner.class

@RunWith(JiraAnnotatedPathRunner.class)
@Configure(stepPatternParser = RegexPrefixCapturingPatternParser.class, storyControls = MyStoryControls.class, storyLoader = MyStoryLoader.class, storyReporterBuilder = MyReportBuilder.class) @UsingEmbedder(embedder = Embedder.class, generateViewAfterStories = true, ignoreFailureInStories = false, ignoreFailureInView = false,
            storyTimeoutInSecs = 100, threads = 1, metaFilters = "-skip")
abstract class ZxConfiguredEmbedder {
...
}


The maven goal*run-stories-with-annotated-embedder* is using the AnnotatedEmbedderRunner, and not my extended version JiraAnnotatedPathRunner.
Which maven goal should I use?
maven says "*Annotated instance com.zanox.prm.marketplace.mediaslot.dashboard.Sprint12Scenarios@49b9a538 not of type interface org.jbehave.core.Embeddable*"

Thank you very much,
Olmo

On 22 December 2011 09:58, Olmo Rigolo <olmorig...@gmail.com <mailto:olmorig...@gmail.com>> wrote:

    Hi Mauro, hi Christiano,

    so I did the right thing by extending the AnnotatedPathRunner. I
    took your idea with the anonymous class for the AnnotationBuilder
    and deleted my own implementation.
    Till now I was using the @UsingPaths annotation, but I think its
    nicer to have a new Annotation like

        @Retention(RetentionPolicy.RUNTIME)
        @Target({ ElementType.TYPE })
        public @interface UsingStories {
            String[] storyies() default {};
        }

    Thank you Cristiano for your hint! This is a nice idea and I
    tested it.

    These conversations are very useful.

    Best regards,
    Olmo


    On 22 December 2011 01:44, Cristiano Gavião <cvgav...@gmail.com
    <mailto:cvgav...@gmail.com>> wrote:

        Hi Olmo,

        As Mauro have said you can extend and findPaths() and you will
        be fine.

        Now that you found Annotated stuffs, one cool thing to be
        aware is about the embedder annotations inheritance...  all
        multi-value annotations attributes can be merged...

        with that, you could group stories in one embeder hierarchy
        and reference the leaf in the maven plugin.

        cheers

        Cristiano





        On 21/12/11 19:56, Mauro Talevi wrote:
        Right, I now see what you mean.  I hadn't quite got the right
        end of the stick before.

        So, yes, in other to reuse the logic of the @UsingPaths
        you'll need to override the AnnotationBuilder.findPaths()
        method.

        Something of this sort would work:

        public class AnnotatedJiraRunner extends AnnotatedPathRunner {

            public AnnotationBuilder annotationBuilder() {
                return new AnnotationBuilder(testClass()){
                      public List<String> findPaths(){
                           // implement your own, bearing in mind
        that annotationFinder() is accessible by sub-classes
                      }
                };
            }
        }

        I would make sense to have this impl added to the jira module.

        On 21/12/2011 19:21, Olmo Rigolo wrote:
        Mauro,

        I do so. But since I tried to use the AnnotatedPathRunner,
        the storyPaths are always null. Because the
        AnnotatedPathRunner uses the AnnotationBuilder which has a
        findPaths() method that is not doing the right thing for me.
        In my case it returns null.
        This is only the case if I use the AnnotatedPathRunner.

        On 21 December 2011 19:16, Mauro Talevi
        <mauro.tal...@aquilonia.org
        <mailto:mauro.tal...@aquilonia.org>> wrote:

            You already have an loader that interprets these  paths
            appropriately, so I would argue that introducing a new
            annotation is a bit redundant.

            Given that paths are just strings, you could
            re-interpret them as generic story ids (a "path" to a
            story).


            On Wed Dec 21 19:05:57 2011, Olmo Rigolo wrote:

                Hi!

                I already use a my own LoadFromJIRA story loader
                that takes jira story ids instead of paths as input
                to search for stories.
                I also use the AnnotatedPathRunner to run my tests.
                There is a @UsingPaths annotation which is read by
                the findPaths() method from the AnnotationBuilder.
                Since I dont need paths, but just Ids, the
                impementation of findPaths() is not applicable in my
                case.


                The idea is to implement my own
                ExtendedAnnotatedPathRunner with its own annotation
                @UseStories for the story ids from JIRA.
                @UseStories(stories={"story-1074", "story-2347"})

                The ExtendedAnnotatedPathRunner  uses a new
                ExtendedAnnotatedBuilder that handles the new
                Annotation @UseStories.

                The appropriate findPath() implementation in the
                ExtendedAnnotatedBuilder would be:

                   public List<String> findPaths() {
                       if
                (!finder.isAnnotationPresent(UseStories.class)) {
                           return new ArrayList<String>();
                       }
                       List<String> includes =
                finder.getAnnotatedValues(UseStories.class,
                String.class, "stories");
                       return includes;
                   }


                Is there a easier way to do this? SInce I just could
                use @UsingPaths.includes to set my story ids, but
                with my own findPaths() implementation.

                Thanks in advance.

                Olmo




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

            http://xircles.codehaus.org/manage_email








Reply via email to