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

Reply via email to