Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト

1 185 vues

Publié le

『はじめてのClojure』勉強会#3
http://clj-first.connpass.com/event/8276/
第7章:テスト、テスト、テスト
の発表担当資料です。

Publié dans : Logiciels
  • Soyez le premier à commenter

『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト

  1. 1. 『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト 2014/9/7(日) @makopi23
  2. 2. 2  7.1 テスト駆動開発 (1/2)  テスト駆動開発とは 実装の前に「テスト・コード」を書き、その「テスト・コード」 が正しく動作するように実装を書く、という開発手法。 TDD (Test Driven Development)と呼ばれる。  【ご参考】 7章を写経したコードをGitHubにアップしました。 https://github.com/makopi23/BeginningClojure
  3. 3. 3 出典: Test Yourself - テストを書くと何がどう変わるか by 和田卓人 http://www.slideshare.net/t_wada/jasst-2014-hokkaidotwadatdd
  4. 4. 4 出典: Test Yourself - テストを書くと何がどう変わるか by 和田卓人 http://www.slideshare.net/t_wada/jasst-2014-hokkaidotwadatdd
  5. 5. 5  7.1 テスト駆動開発 (2/2)  テスト駆動開発の利点 想定外の理由でプログラムが動かなくなった、などの検 知が容易になり、コードの品質を保ってくれる。 要件に変更があっても、一度書いたテスト・コードがあれ ば、安心してコードを弄ることができる。  Clojureにおけるテスト 「clojure.test」ネーム・スペースに、標準でテストのための 関数が用意されている。
  6. 6. 6  7.2 「clojure.test」を使ったテスト (1/8)  「テスト・コード」を配置する位置 「Leiningen」で作成したプロジェクトであれば、あらかじめ 「test」ディレクトリが作成済みなので、そこに配置する。  テスト用の「ネーム・スペース」 ・テスト対象のネーム・スペース (テスト対象ファイル) hoge.fuga (src/hoge/fuga.clj) ・テスト・コードを置くネーム・スペース (テストコード) hoge.test.fuga (test/hoge/test/fuga.clj)
  7. 7. 7  7.2 「clojure.test」を使ったテスト (2/8)  「郵便番号だと真を返す関数」のテスト駆動開発 Leiningenで「postcode2」というプロジェクトを作成する と、testディレクトリにテストのひな形が用意される。
  8. 8. 8  7.2 「clojure.test」を使ったテスト (3/8)  「Leiningen」経由でのテスト 「lein test」コマンドでテストを実行すると、正しく失敗する
  9. 9. 9  7.2 「clojure.test」を使ったテスト (4/8)  valid-postcode?-test関数の作成
  10. 10. 10  7.2 「clojure.test」を使ったテスト (5/8)  valid-postcode?-test関数の実行 「valid-postcode?」関数が無いためエラー発生。
  11. 11. 11  7.2 「clojure.test」を使ったテスト (6/8)  valid-postcode?関数の定義 src/postcode2/core.cljにvalid-postcode?関数を定義  #"^d{3}-d{4}$" は正規表現 - 文字列の最初は3桁の数字。 - その後「ハイフン」がある。 - さらにその後4桁の「数字」。
  12. 12. 12  7.2 「clojure.test」を使ったテスト (7/8)  再テスト 「lein test」コマンドで再度テストを走らせてみる。 すると、一箇所だけテストに失敗する。 引数にnilが渡されNullPointerExceptionが発生している。
  13. 13. 13  7.2 「clojure.test」を使ったテスト (8/8)  nilをre-findの前で弾くようにvalid-postcode?関数を修正 再度テストを試すと、テストが成功する。
  14. 14. 14  7.3 Ringアプリケーションのテスト (1/3)  handlerに対して疑似的なリクエストを投げて、その応答 が正しいかをチェックする。  そのため、疑似的なリクエストを投げるRing-Mockライブ ラリを使用する。  project.cljの「:profile」シンボルのマップに追加  「ring.mock.request」ネーム・スペースが利用できるよう になり、その中の「request」関数でテストできる。 (handler (reuest :get “/”))
  15. 15. 15  7.3 Ringアプリケーションのテスト (2/3)  「Compojure」テンプレートを使ってLeigingenプロジェクト を作成すると、自動で作成されるテストファイル
  16. 16. 16  7.3 Ringアプリケーションのテスト (3/3)  「lein test」コマンドでテスト実行  「lein ring server」コマンドでWebアプリを起動
  17. 17. 17  まとめ  テスト駆動開発とは 実装の前に「テスト・コード」を書き、その「テスト・コード」が 正しく動作するように実装を書く、という開発手法。 TDD (Test Driven Development)と呼ばれる。  Clojureにおけるテスト 「clojure.test」ネーム・スペースに標準で用意されている、テ ストのための関数を使用する。  Ringerアプリケーションのテスト 疑似的なリクエストを投げるRing-Mockライブラリを使用で きる。

×