Upgrade to Pro — share decks privately, control downloads, hide ads and more …

test-unit-night

Dbc53b57fdebd32889492cec2449011c?s=47 yoshihara
December 19, 2014

 test-unit-night

社内勉強会でtest-unitについて紹介した時のスライド。

Dbc53b57fdebd32889492cec2449011c?s=128

yoshihara

December 19, 2014
Tweet

Transcript

  1. test-unit-night よしはら 万葉究楽部 2014/12/15

  2. 誰? よしはら yoshihara/@hyoshihara04

  3. test-unit�⼿習い

  4. ⼿習い? ⼊門DA�YO

  5. まずはclone �������������������������������������������������������� �������������������� ����������������

  6. install中に軽く説明 test-unitは rubyらしくテストを書く ことを指向している テスティングフレームワークです

  7. install中に軽く説明 その名の通りユニットテスト 「何をテストするか」を書く (ちょっとだけ)RSpecぽい書 き⽅もできます

  8. test-unitの昔 昔はrubyと⼀緒のリポジトリだ った 開発しにくかったのでRubyから 分離 test-unitの代わりになったのが minitest

  9. test-unitの最近 ruby2.2からまたバンドルされる ことになりました 詳しくは下記をご覧ください ���������������������������������������������

  10. install後 lesson1からlesson5まで ディレクトリを分けています

  11. lesson0 準備

  12. テスト対象は? ����������� Userクラス last̲name,�first̲name,�localeを持つ full̲nameメソッド last̲name,first̲nameをlocaleに合わ せて連結して出⼒

  13. テスト対象は? ja?メソッド locale�==�"ja"を返す

  14. lesson1

  15. とりあえずテスト動かす ������������ �����������������������

  16. こんなのが出てくるはず test-unit-notify

  17. ファイル開きましょう ����������������� test-hoge.rbかhoge-test.rbにす ることが多い

  18. テストクラスの定義

  19. テストメソッドの定義

  20. アサーションの書き⽅ assert̲equal

  21. 大体assert̲equalで全部書 けます ������������������������������

  22. それ以外にもある assert̲true assert̲false assert̲raise etc...

  23. Rubyぽく書く 感じ(�`◉∨◉´)

  24. ハンズオンタイム User#ja?メソッドのテストを assert̲trueで書き換えてみる

  25. 最近⼊ったアサーションメソ ッド

  26. lesson2

  27. lesson2 ���������������

  28. ファイル⾒ましょう ����������������� 失敗するテスト

  29. assert�do? ブロックを実⾏した結果がtrue なら成功 失敗した時は各メソッドの値を 表⽰する power�assertとよばれるもの

  30. power�assertとtest-unit test-unit�3.0目⽟機能 述語メソッドをテストするのに オススメ(らしい) exist?とか

  31. なにがいいの? 失敗した時にわかりやすい

  32. 普通のassert 結果が大事

  33. power-assertの場合 �����������������������

  34. 実⾏結果 途中が大事

  35. 失敗した時がテストの本領 テスト「実装が壊れたことをす ぐにわかるようにするもの」 失敗した時の情報がわかりやす いのがベンリ

  36. ハンズオンタイム assert�にいろんなブロックを渡 してみてください 例)上のassert̲equalをassert� doに置き換える

  37. それはいいけど rspecぽく⽂章で説明したい ヨー(�⁰⊖⁰)

  38. lesson3

  39. lesson3 ��������������� �������������������

  40. test/sub̲test̲case

  41. test/sub̲test̲case 大体rspecのdescribe/context みたいなかんじ sub̲test̲caseメソッドはtest メソッドのグルーピングに使う

  42. ハンズオンタイム 失敗させてみてください rspecとの違い的なアレです

  43. Rubyぽい? (�`◉∨◉´)"

  44. いきさつ �����������������������������������������������������������������

  45. いきさつ �����������������������������������������������������������������

  46. (\(�⁰⊖⁰)/)

  47. lesson4

  48. lesson4 ������������ ���������������������

  49. lesson4 ちょっと思いませんか

  50. テスト⾒ると なんか似たようなの書いてある (`◎∨◎´)

  51. 共通化でき...る...? (�`◉∨◉´)"

  52. してみた ����������������������

  53. data? ちょっとemacsさん出番ですよ

  54. dataメソッド 次に定義したテストメソッドで 使うデータを定義 dataメソッドで定義したデータ 分だけテストメソッドが実⾏さ れる 失敗させてみるとわかりやすい

  55. dataメソッド dataメソッドに渡した引数(ブ ロック)が最終的にハッシュを 返せばOK key�->�ラベル value�->�テストメソッドに渡す引数 dataメソッド何回も呼ぶ⽅法もある

  56. ハンズオンタイム 適当に値をいじってみてくださ い test�doで書きなおしてみてくだ さい

  57. lesson5

  58. lesson5 複数テストの前処理とかどうす るの? 毎回テストの決まったタイミングでの 定形処理 DB掃除とか

  59. lesson5 ��������������� �����������������

  60. いろいろ

  61. startup/shutdown 各テストケースの前後に実⾏さ れるメソッド クラスメソッド

  62. setup/teardown 各テストメソッドの前後に実⾏ されるメソッド インスタンスメソッド

  63. テスト実⾏ ����������������������� 端末に⽂字がでてるはず

  64. 使い⽅ 各テストケースで使いたいメソ ッドを使う ベタ書き module切ってincludeやextend Rubyでメソッド共有するときの やり⽅でどうぞ〜

  65. ハンズオンおわり

  66. おまけ(�⁰⊖⁰)

  67. どうやってテストを実⾏して るか ���������������� いっつもコピペするスクリプト です(�`◉∨◉´)

  68. appendix テストの実⾏の仕⽅ ⾊々指定してテスト実⾏

  69. ⾊々指定してテスト実⾏ ���������������������������� ������������������������������ ��������������������������������

  70. appendix-2 railsだと動かないの? gemあるけど⾊々調整中(�`◉∨◉´)" valid?がassert�doでテストできなか ったの...

  71. ありがとうございました (\(�`◉∨◉´)/)