Well, it's a bit of a long story, but here goes:

We have a website which is based around a content management system. The 
web templates that we use are very dynamic and change quite alot depending 
on content and the way that our editors publish it. Our ambition is to 
automate web visitor tests for all relevant browsers and all relevant 
visitor patterns. It's a daunting task, to be honest. Currently, we're 
doing almost all of these tests manually, but currently we are automating 
manual tests quicker than we're constructing new stuff to test. As the 
number of our automated tests grow, so does the need for structure. 

Enter BDD. ;)

We have already written a framework around Selenium, partly to provide a 
Command pattern style interface for finding and/or changing content in our 
tests, but mostly to circumvent the frailty and the poor performance that 
is inherent in Selenium. The framework uses Spring to keep track of 
browsers and it requires that every test extends a class, which in turn 
extends SeleneseTestBase.

 We'll hopefully open source the relevant parts of the framework before 
christmas. Therefore, unfortunately we cannot simply rewrite everything 
from scratch and do stuff the JBehave way. 

We have to solve two needs: We need to use said framework. We also need to 
keep all our stories in one or at most a few Google Drive spreadsheets, 
otherwise we'll quickly lose track of what's tested where. This presented 
us with a dilemma: how can a developer run one and only one scenario, as 
described by the Java code he's working on? Hopefully, we've solved it in 
our semi-hack of an Embedder:

        protected Embeddable embeddable = null;

        <snip>

        @Override
        public InjectableStepsFactory stepsFactory() {
                if (embeddable != null) {
                        return new InstanceStepsFactory(configuration(), 
embeddable);
                }

                return new SpringStepsFactory(configuration(), 
applicationContext);
        }

        <snip>

and our abstract base test class, which implements Embeddable:


        @Test
        public void run() throws Throwable {
                embedder.setEmbeddable(this);
                embedder.runStoriesAsPaths(Arrays.asList(...));
        }

Currently I'm looking at using Meta filters to filter out all but the 
current scenario, so we'll avoid all the PENDING fluff around the actual 
scenario, but it's not incredibly important. I noticed the line of code in 
Embedder.java and I thought I was looking at a bug.

We're probably doing all of this a bit ass-backwards...I'm looking forward 
to a "why don't you do it -this- way instead?" kind of mail. :)

Ola



Från:
Mauro Talevi <mauro.tal...@aquilonia.org>
Till:
"dev@jbehave.codehaus.org" <dev@jbehave.codehaus.org>
Datum:
2012/11/19 12:01
Ärende:
Re: [jbehave-dev] Overriding metaFilter() in my own Embedder.



Hi Ola,

can you not make use of the useMetaFilters method in the Embedder to set 
the meta filters?

Can you share what you're trying to do and how?

Please raise a jira issue for the google API upgrade with a link to the 
patch on GitHub.

Cheers 

PS: Thanks for your expression of support. Much appreciated!


On 19 Nov 2012, at 11:23, Ola Sundell <ola.sund...@svt.se> wrote:

Hello and thanks for JBehave, a wonderful library! 

I am trying to override metaFilter() in my own Embedder, but the 3.7.3 
code looks like this, from Embedder.java, rows 422-424: 

    public MetaFilter metaFilter() { 
        return new MetaFilter(StringUtils.join(metaFilters, " "), 
embedderMonitor); 
    } 

Shouldn't it be 
        return new MetaFilter(StringUtils.join(metaFilters(), " "), 
embedderMonitor()); 
instead? It would be far easier to extend...I would be overjoyed if this 
found its way into 3.7.4! 

Oh, and btw: I've written my own hack for Google Drive which uses the 
newer Google APIs, including OAuth2 and google-api-services-drive instead 
of the old, deprecated stuff that you guys have. I can share it on Github 
if you're interested (and my employer thinks it's a good idea, which I am 
so certain of that I assume it). 

Thanks, 
Ola

Reply via email to