I wasn't suggesting foisting UsingMiniMock on an unsuspecting world. Merely introducing a BaseGiven that would be a superclass of GivenUsingMiniMock. So your EventUsingAbbot would extend BaseEvent rather than implementing Event.

You're right, it's me being nervous. So I'm happy to be told I'm wrong.

Just wanted to raise it on the list.

Elizabeth Keogh wrote:

Dan North <[EMAIL PROTECTED]> wrote on 26/03/2007 17:53:51:

> Hi folks.
>
> It turns out evolving an interface in a statically-typed language is a
> non-backwards compatible action. What I mean is, if I add or change a
> method, then any clients implementing that interface will break, which
> is obviously a Bad Thing.
>
> There's a nice pattern to manage this that looks like this:
>
> <stuff to stop people implementing interfaces>
>
> which I'd like to sneak into the codebase for Story, Scenario, Given,
> Event, Outcome, Step, Behaviour and World (plus any others I've
> forgotten) before people start implementing them.

This will prevent me from implementing Given while extending something else to use as a World. That's a really useful pattern for Worlds whose setUp() might break. So I don't want you to stop me overriding Given please! And I definitely don't want a messy pseudodoc method to implement, should I choose to ignore you. :P

Also, forcing us to extend ThingUsingMiniMock ties us into MiniMock, rather than just the JBehave Story framework. Having had a nightmare trying to get Abbot to play nice outside of JUnit, I don't want to push the same problem onto our users too. One of the things I most like about JBehave is the independence of each feature, with wiring that merely supports the most likely combinations of feature.

Keep the interfaces. They're well-designed (you should know!). Do you think they're likely to change?

Do we have a story for which this change would give value? Can we help to find another way to deliver it that doesn't break my stories (below)?

Cheers,
Liz.
--

As a JBehave user
I want the story framework to be independent of the implementation
So that I can extend Abbot / Selenium / Sahi / Fit / My experimental open source project classes.

As a JBehave user
I want to implement Given / Event / Outcome / Story / Scenario myself
So that I can make a World into a Given and set it up at the beginning of the scenario / use my Java 5 generics / use a sensible refactorable mocking framework.

--
Elizabeth Keogh
[EMAIL PROTECTED]
http://www.livejournal.com/users/sirenian

Reply via email to