Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

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

1.235 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Software
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

『はじめての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ライブラリを使用で きる。

×