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
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
test-unit-night
社内勉強会でtest-unitについて紹介した時のスライド。
yoshihara
December 19, 2014
More Decks by yoshihara
See All by yoshihara
ちいさなRailsアプリのRroonga
yoshihara
0
630
Other Decks in Technology
See All in Technology
コンポーネント名には何を含めるべきなのか? / what-should-be-included-in-component-names
airrnot1106
0
160
A Bag-of-Documents Model for Query Specificity
dtunkelang
0
150
人依存からAIネイティブの体制へ:バックエンド開発の裏側【SORACOM Discovery 2026】
soracom
PRO
0
120
AIツールを導入しても生産性はあがらない? カオナビが直面した 3つの壁と乗り越え方。/ Overcoming 3 Barriers to AI-Driven Productivity at kaonavi
kaonavi
0
400
AIエージェントがあれば技術書なんてすぐ書けるでしょ→無理でした
watany
6
1.1k
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
4
1.1k
reFACToring
moznion
1
840
QA・ソフトウェアテスト研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
3
1.6k
データエンジニアリングとドメイン駆動設計
masuda220
PRO
15
2.7k
なぜMIXIはゼロトラスト基盤として クラウドフレアを選んだのか - Cloudflare Peer Point SASE User Voices
mixi_engineers
PRO
2
120
人手不足への挑戦:車両保全を支えるIoTとクラウド内製化の道【SORACOM Discovery 2026】
soracom
PRO
0
150
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
160
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1370
210k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Bash Introduction
62gerente
615
220k
Building Applications with DynamoDB
mza
96
7.1k
How to Talk to Developers About Accessibility
jct
2
450
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
640
The agentic SEO stack - context over prompts
schlessera
0
850
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
400
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でテストできなか ったの...
ありがとうございました (\(�`◉∨◉´)/)