ではいよいよ、easybを使ってビヘイビア駆動開発を実践してみよう。

クラスの仕様を決める

今回の例では、「FilePath」というJavaクラスを作ることとする。このクラスはファイルパスを表したもので、以下のような仕様に従うものとする。

  • コンストラクタでパス文字列を受け取る。nullを渡されるとIllegalArgumentExceptionを発生する。
  • getDirPath()というメソッドを持ち、パス文字列のディレクトリ部分("/a/b/c.txt"であれば"/a/b/"まで)を返す。パス文字列がファイル名だけの場合、このメソッドは長さゼロの文字列を返す。
  • getFileName()というメソッドを持ち、パス文字列のファイル部分("/a/b/c.txt"であれば"c.txt")を返す。パス文字列がディレクトリパスだけの場合、このメソッドは長さゼロの文字列を返す。

サンプルということで、ファイルパスの区切り文字はスラッシュしか考慮していない。

イメージとしては、以下のような構造を持つJavaクラスだ。

public class FilePath {
  public FilePath(String path) {
  }
  public String getDirPath() {
  }
  public String getFileName() {
  }
}

TDDと同じく、検証コードを書き始める段階ではこのクラスが存在している必要はない。先に検証コードを書いて実行し、エラーを発生させ、そのエラーを修正していくという形でクラスを作成していけばよい。