Test-driven Development, although not ubiquitous, certainly has made a strong impact on the software industry. However, there has been some criticism of TDD. Advocates of Behavior-driven Design suggest that the testing-oriented vocabulary of TDD causes developers to focus on the wrong aspects of development. Rather than thinking about testing, developers should be focusing on specifying behavior. But although the BDD frameworks use different terminology, they are still structurely similar to the xUnit frameworks that came before them.
In this presentation, we will look at a Ruby-based domain specific language designed to explicitly express and capture program semantics, not through the use of tests but through the use of contracts and explicit specifications. We will compare this technique to the traditional xUnit framework and discuss the strengths and weaknesses of each approach.