On Mar 25, 2009, at 9:08 AM, aslak hellesoy wrote:
Big news for all Java programmers out there.
Now you can use Cucumber with pure Java!
That's right, you don't have to write a single line of Ruby! (1)
All of your step definitions can be written as annotated methods in
POJOs (Plain Old Java Objects).
To get a taste of what this looks like, check out the simple example
in the cucumber_java project on GitHub:
* README for example:
http://github.com/aslakhellesoy/cucumber_java/tree/271160300da5bc9275dd67624f711c5ea6913187/examples/simple
* Some sample step defs:
http://github.com/aslakhellesoy/cucumber_java/blob/271160300da5bc9275dd67624f711c5ea6913187/examples/simple/src/main/java/simple/StuffSteps.java
* The main page: http://github.com/aslakhellesoy/cucumber_java/tree/master
By this I hope Cucumber will reach a bigger crowd. Much bigger crowd
actually :-) - this will work for Scala, Clojure, Jython and all the
other cool JVM languages too.
(I'll be doing something similar for .NET, which will bring Cucumber
goodness to C#, F# and whatever languages run on .NET. But IronRuby
must catch up on speed first).
I had the pleasure of going back to visit PicoContainer - a
pioneering lightweight dependency injection container I developed
with Paul Hammant back in 2003. It's still lightweight and a joy to
use (relatively speaking - Java in itself isn't joyful). Cucumber-
java uses PicoContainer to instantiate the POJOs that define the
annotated step definition methods, so if you're so inclined, these
classes can depend on each other via constructor DI, and
PicoContainer just figures out how to instantiate the objects).
So if you're working on a Java project, have been looking at
Cucumber but stayed away because of all the weird Ruby, this is your
chance. Here is a cuke for Duke!
(::) Aslak (::)
(1) You still need a tiny bit of Ruby to register step definitions:
http://github.com/aslakhellesoy/cucumber_java/blob/271160300da5bc9275dd67624f711c5ea6913187/examples/simple/features/support/env.rb
(This will hopefully go away in the future, with some better Ant and
Maven support).
Very cool stuff. It would be an interesting and informative exercise
to take a JBehave tutorial and use Cucumber to drive out the same
feature and then have a side-by-side comparison of the required step
definitions. I found this JBehave tutorial which would make a good
candidate for such a comparison:
http://www.ryangreenhall.com/articles/bdd-by-example.html
If someone doesn't get around to this in the next couple of weeks I
may take a stab at it and make a blog post of it.
-Ben
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users