Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
test-unit-night
Search
yoshihara
December 19, 2014
Technology
0
130
test-unit-night
社内勉強会でtest-unitについて紹介した時のスライド。
yoshihara
December 19, 2014
Tweet
Share
More Decks by yoshihara
See All by yoshihara
ちいさなRailsアプリのRroonga
yoshihara
0
580
Other Decks in Technology
See All in Technology
BirdCLEF+2025 Noir 5位解法紹介
myso
0
190
英語は話せません!それでも海外チームと信頼関係を作るため、対話を重ねた2ヶ月間のまなび
niioka_97
0
110
社内お問い合わせBotの仕組みと学び
nish01
0
170
Goにおける 生成AIによるコード生成の ベンチマーク評価入門
daisuketakeda
2
100
DataOpsNight#8_Terragruntを用いたスケーラブルなSnowflakeインフラ管理
roki18d
1
340
Large Vision Language Modelを用いた 文書画像データ化作業自動化の検証、運用 / shibuya_AI
sansan_randd
0
100
PLaMoの事後学習を支える技術 / PFN LLMセミナー
pfn
PRO
9
3.8k
SoccerNet GSRの紹介と技術応用:選手視点映像を提供するサッカー作戦盤ツール
mixi_engineers
PRO
1
170
Why React!?? Next.jsそしてReactを改めてイチから選ぶ
ypresto
10
4.4k
Trust as Infrastructure
bcantrill
0
330
いまさら聞けない ABテスト入門
skmr2348
1
200
データエンジニアがこの先生きのこるには...?
10xinc
0
440
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.4k
The Cost Of JavaScript in 2023
addyosmani
53
9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Fireside Chat
paigeccino
40
3.7k
Why Our Code Smells
bkeepers
PRO
339
57k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.2k
Visualization
eitanlees
148
16k
Rails Girls Zürich Keynote
gr2m
95
14k
Thoughts on Productivity
jonyablonski
70
4.9k
Typedesign – Prime Four
hannesfritz
42
2.8k
Transcript
test-unit-night よしはら 万葉究楽部 2014/12/15
誰? よしはら yoshihara/@hyoshihara04
test-unit�⼿習い
⼿習い? ⼊門DA�YO
まずはclone �������������������������������������������������������� �������������������� ����������������
install中に軽く説明 test-unitは rubyらしくテストを書く ことを指向している テスティングフレームワークです
install中に軽く説明 その名の通りユニットテスト 「何をテストするか」を書く (ちょっとだけ)RSpecぽい書 き⽅もできます
test-unitの昔 昔はrubyと⼀緒のリポジトリだ った 開発しにくかったのでRubyから 分離 test-unitの代わりになったのが minitest
test-unitの最近 ruby2.2からまたバンドルされる ことになりました 詳しくは下記をご覧ください ���������������������������������������������
install後 lesson1からlesson5まで ディレクトリを分けています
lesson0 準備
テスト対象は? ����������� Userクラス last̲name,�first̲name,�localeを持つ full̲nameメソッド last̲name,first̲nameをlocaleに合わ せて連結して出⼒
テスト対象は? ja?メソッド locale�==�"ja"を返す
lesson1
とりあえずテスト動かす ������������ �����������������������
こんなのが出てくるはず test-unit-notify
ファイル開きましょう ����������������� test-hoge.rbかhoge-test.rbにす ることが多い
テストクラスの定義
テストメソッドの定義
アサーションの書き⽅ assert̲equal
大体assert̲equalで全部書 けます ������������������������������
それ以外にもある assert̲true assert̲false assert̲raise etc...
Rubyぽく書く 感じ(�`◉∨◉´)
ハンズオンタイム User#ja?メソッドのテストを assert̲trueで書き換えてみる
最近⼊ったアサーションメソ ッド
lesson2
lesson2 ���������������
ファイル⾒ましょう ����������������� 失敗するテスト
assert�do? ブロックを実⾏した結果がtrue なら成功 失敗した時は各メソッドの値を 表⽰する power�assertとよばれるもの
power�assertとtest-unit test-unit�3.0目⽟機能 述語メソッドをテストするのに オススメ(らしい) exist?とか
なにがいいの? 失敗した時にわかりやすい
普通のassert 結果が大事
power-assertの場合 �����������������������
実⾏結果 途中が大事
失敗した時がテストの本領 テスト「実装が壊れたことをす ぐにわかるようにするもの」 失敗した時の情報がわかりやす いのがベンリ
ハンズオンタイム assert�にいろんなブロックを渡 してみてください 例)上のassert̲equalをassert� doに置き換える
それはいいけど rspecぽく⽂章で説明したい ヨー(�⁰⊖⁰)
lesson3
lesson3 ��������������� �������������������
test/sub̲test̲case
test/sub̲test̲case 大体rspecのdescribe/context みたいなかんじ sub̲test̲caseメソッドはtest メソッドのグルーピングに使う
ハンズオンタイム 失敗させてみてください rspecとの違い的なアレです
Rubyぽい? (�`◉∨◉´)"
いきさつ �����������������������������������������������������������������
いきさつ �����������������������������������������������������������������
(\(�⁰⊖⁰)/)
lesson4
lesson4 ������������ ���������������������
lesson4 ちょっと思いませんか
テスト⾒ると なんか似たようなの書いてある (`◎∨◎´)
共通化でき...る...? (�`◉∨◉´)"
してみた ����������������������
data? ちょっとemacsさん出番ですよ
dataメソッド 次に定義したテストメソッドで 使うデータを定義 dataメソッドで定義したデータ 分だけテストメソッドが実⾏さ れる 失敗させてみるとわかりやすい
dataメソッド dataメソッドに渡した引数(ブ ロック)が最終的にハッシュを 返せばOK key�->�ラベル value�->�テストメソッドに渡す引数 dataメソッド何回も呼ぶ⽅法もある
ハンズオンタイム 適当に値をいじってみてくださ い test�doで書きなおしてみてくだ さい
lesson5
lesson5 複数テストの前処理とかどうす るの? 毎回テストの決まったタイミングでの 定形処理 DB掃除とか
lesson5 ��������������� �����������������
いろいろ
startup/shutdown 各テストケースの前後に実⾏さ れるメソッド クラスメソッド
setup/teardown 各テストメソッドの前後に実⾏ されるメソッド インスタンスメソッド
テスト実⾏ ����������������������� 端末に⽂字がでてるはず
使い⽅ 各テストケースで使いたいメソ ッドを使う ベタ書き module切ってincludeやextend Rubyでメソッド共有するときの やり⽅でどうぞ〜
ハンズオンおわり
おまけ(�⁰⊖⁰)
どうやってテストを実⾏して るか ���������������� いっつもコピペするスクリプト です(�`◉∨◉´)
appendix テストの実⾏の仕⽅ ⾊々指定してテスト実⾏
⾊々指定してテスト実⾏ ���������������������������� ������������������������������ ��������������������������������
appendix-2 railsだと動かないの? gemあるけど⾊々調整中(�`◉∨◉´)" valid?がassert�doでテストできなか ったの...
ありがとうございました (\(�`◉∨◉´)/)