PHPSpec は、PHP では初の振舞駆動開発 用フレームワークです。PHP な人たちにとっては、 少し目新しく感じられるかもしれません。 また、ちょっと奇抜なものに思えるかもしれません。 他の言語の世界では、BDD は徐々に有名になりつつあります。 Ruby における RSpec や Java における JBehave などの存在もその一因です。 Java や Ruby、.NET、Smalltalk、Javascript などの言語には BDD 用のフレームワークが存在します。 なかには Java のように、ひとつの言語に対して複数のフレームワークが存在するものもあります。
一方、以前からあるユニットテスト用フレームワークたちも、 この流れを無視できなくなりつつあるようです。 彼らも BDD に適した API を用意するなどして、この流行に乗っかろうとしています。 しかし、この試みはまだ完全に成功しているとは言えません。 先ほども書いたとおり、BDD というのは単に TDD の "assert" を "should" に変えただけのものではないのです。 ただ、この流れは悪いことではありません。 フレームワークを移行することなしに、旧来の TDD ユニットテストにうまく BDD の仕様記述を混ぜることができるということになります。
さらに複雑なことに、BDD フレームワーク側でもまったく同じような動きがあるのです。 つまり、BDD フレームワークでユニットテスト実行用のテストランナー API を提供するということです。これにより、移行作業がより簡単になります。 Ruby の RSpec などは、すでに最新のバージョンでこの改良が始まっています。