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