すもぎのめも

いろいろあったことをメモしています

NaturalSpec を使用して C# プロジェクトのスペックを生成する

前回の2つの記事では、NaturalSpec紹介し、使用方法を示した。今回は NaturalSpec を使用して C# プロジェクトの自動テスト可能なシナリオを記述する方法を示す。"最初にテストを書く" TDD の原則のように、私たちはスペックを初めに書き、"Red-Green-Refactor" のサイクルに身を委ねる。

"Red" – 失敗するシナリオのスペックを作成する
まずは、"Spec.CarSelling" という F# のクラスライブラリプロジェクトを作成し、プロジェクトの参照に NaturalSpec.dll と nunit.framework.dll を追加した (詳細は "NaturalSpec 入門" を参照してほしい)。

ここで最初のシナリオを書ける。

この段階でシナリオの準備が整っているが、コンパイルされていない。これは "Red" の段階の準備が整ったことを意味する。

"Green" – テストが通るパスを作成する
テストをグリーンにするために、"CarSellingLib" という C# のクラスライブラリを作成し、CarType という列挙体と Dealer、それに Car というクラスを定義する。YAGNI 原則にこだわって、スペックをグリーンにするためだけの最小の実装を行う (出力機能のために ToString メソッドも合わせて)。

スペックプロジェクトにプロジェクト参照を追加したら、そのユニットテストが通るだろう。これで "Green" ステップが完了する (スペックを実行する方法がわからなければ、"NaturalSpec 入門" を参照してほしい)。スペックが "Green" になったため、もっとシナリオを追加できる。

再び "Red" のフェーズにきた。

"リファクタリング" - 重複を排除し、パターンに従うようにコードを修正する
"Green" のスペックを作成したあと、いくつかのリファクタリングを行うと、プロジェクトコードはこのようになる。

スペックの出力は以下のとおり。

まとめ
NaturalSpec を使用して C# プロジェクトを "Red-Green-Refactor" サイクルで開発する方法を示した。この方法で簡単に自然言語でのスペックを取得できる。