RubyOnRailsの開発環境

Cucumberのfeatureファイルのプラクティス

投稿日:

Cucumberのfeatureファイルのプラクティスについて、実際よくわかってなかったので色々調べてみた

cukes.info/

github.com/cucumber/cucumber

github.com/cucumber/cucumber-rails

一番参考になったのが結局この本

 

cucumberのファイル構成

  • featureファイル
  • step_definitions
  • env.rb

featureファイルに書くキーワード

 

フィーチャファイルの実例

だいたい見ればわかるようになってる

github.com/cucumber/cucumber/blob/master/examples/i18n/ja/features/addition.feature

github.com/cucumber/cucumber/blob/master/examples/i18n/ja/features/division.feature

 

フィーチャ(機能)に書くこと

フィーチャはタイトルとナラティブで構成される

たぶん機能的にはコメントのようになにを書いてもエラーとかになることはない

以下はおそらくビジネス?やソフトウェア開発計画?的に意味がある

タイトル

フィーチャ(機能)の名前.

ユーザーがシステムに要求しているであろうアクティビティを簡潔に書く(243ページ)

ナラティブ

機能の説明.

英語は得意でないので、ナラティブを辞書でググってみる

ナラティブ 【narrative】

物語。朗読による物語文学。叙述すること。話術。語り口。→ナレーター

kotobank.jp/word/%E3%83%8A%E3%83%A9%E3%83%86%E3%82%A3%E3%83%96

フィーチャのナラティブはConnextraフォーマットで書く(244ページ)のがおすすめ

らせん型ワークフロー:CONNEXTRAフォーマットの考え方について

 

シナリオに書くこと

シナリオは、ソフトウェアがどのような振る舞いをすべきかに関する具体例

最も一般的なシナリオ=「ハッピーパス」を説明するシナリオからはじめて、その後、特異なケースを説明するシナリオを追加していく

(248ページ)

 

ステップの種類

シナリオは任意の数のステップで構成される.

ステップの種類は、Given、When、Then、And、Butの5種類

Givenはシナリオにおいて事実として受け入れるものを示す

Whenはシナリオにおけるイベントを示す

Thenは期待される結果を示す

AndとButはその直近にあるGiven、When、Thenと同じ意味

(251ページ)

 

昔つくったしょぼいfeatureジェネレータ

github.com/seventhsense/featuregenerator

 

宣言型シナリオと命令型シナリオ

たぶん、こんなのが宣言型

たぶん、こんなのが命令型

 

宣言型なら、フィーチャファイルがすっきり読みやすくなるけど、ステップ定義をたくさん書く必要がある

命令型なら、ステップ定義の使いまわしができるけど、フィーチャファイルが冗長になる

適度にバランスを保つのがベストというのが多数の意見

 

シナリオアウトライン

Cucumberによるストーリー駆動開発の手法

上の実例でもつかってるやつ

値をテーブルで与えて同じようなシナリオをまとめて書くやり方

-RubyOnRailsの開発環境
-

執筆者:

関連記事

WindowsでCUIからGit,Virtualbox,Java,Rubyなど1700種類のソフトを一発でインストールできるパッケージマネージャ~Chocolatey NuGet

By: Anne-Lise Heinrichs – CC BY 2.0 chocolatey.org/ 目次1 インストール2 パッケージの確認・検索3 パッケージのインストール4 パッケ …

SimpleCovのカバレッジをvimに表示させる~simplecov-vim

      github.com/nyarly/Simplecov-Vim 参照 Rails3でテストカバレッジを計測する~simplecov,thin 自分のgem上の …

Rails3.2でJasmineをつかってBackbone.jsのModelをテストしてみる

  By: Glory Cycles   Developing Backbone.js Applications addyosmani.github.com/backbone-fu

Redmineプラグイン開発にCoffeeScriptとSASSを使う〜guard-sprockets&guard-sass

By: waferboard – CC BY 2.0 目次1 考え方2 guardの設定3 Guardfileをつくる4 できた、ただし 考え方 Redmineではsprocketを使って …

no image

Git用サーバのgitoliteにユーザー追加

環境 Git用サーバのgitoliteをインストール クライアントでssh用の鍵を作成

 ssh用のpub鍵を管理者に送信 sftpで …