Importance of testing
I just finished the excellent Coursera/Berkeley Software as a Service (SaaS) class yesterday. There were two major themes in the class: engaging customers in creating user stories to make sure that you build the right thing, and use BDD and TDD that relies on continuous testing. In particular I enjoyed learning how to use Cucumber that has two parts: an english (or other natural language) style DSL that customers and developers can work on together to create user stories with expectations of what the system should do and an underlying set of steps that map the customer facing DSL descriptions to real testing code.
Cucumber is very popular in the Rails world but I had never tried it before. I now like using Cucumber and as I get more used to it for Ruby and also for Rails I look forward to integrating it into my development process for other programming languages.
A few nights ago I spent some time with the lein-cucumber project for Clojure. It is still a little rough around the edges compared to the Ruby version but seems to be very workable.
This morning over coffee I have been looking at the Java version Cucumber-JVM that lein-cucumber is based on. I use IntelliJ and there is a Cucumber plugin. I couldn't get my tests to run inside IntelliJ this morning but the IntelliJ editor understands the syntax of features files, does syntax color highlighting etc. Looks promising for the future. For now I think that I will just add the Maven Cucumber-JVM dependency and run the tests from the command line. For Ruby and Rails development running RSpec and Cucumber tests inside the IDE is very convenient so I look forward to figuring out how to get in-IDE tests running in IntelliJ.