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
Grafana MCPサーバーによるAIエージェント経由でのGrafanaダッシュボード動的生成
hamadakoji
1
1k
ここ一年のCCoEとしてのAWSコスト最適化を振り返る / CCoE AWS Cost Optimization devio2025
masahirokawahara
1
1.1k
スプリントレトロスペクティブはチーム観察の宝庫? 〜チームの衝突レベルに合わせたアプローチ仮説!〜
electricsatie
1
150
Flutterでキャッチしないエラーはどこに行く
taiju59
0
210
Language Update: Java
skrb
2
180
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
430
異業種出身エンジニアが気づいた、転向して十数年経っても変わらない自分の武器とは
macnekoayu
0
260
【Grafana Meetup Japan #6】Grafanaをリバプロ配下で動かすときにやること ~ Grafana Liveってなんだ ~
yoshitake945
0
220
iPhone Eye Tracking機能から学ぶやさしいアクセシビリティ
fujiyamaorange
0
200
DeNA での思い出 / Memories at DeNA
orgachem
PRO
6
1.9k
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
2
1.1k
RSCの時代にReactとフレームワークの境界を探る
uhyo
8
1.2k
Featured
See All Featured
Statistics for Hackers
jakevdp
799
220k
Speed Design
sergeychernyshev
32
1.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Unsuck your backbone
ammeep
671
58k
Optimizing for Happiness
mojombo
379
70k
Navigating Team Friction
lara
189
15k
GitHub's CSS Performance
jonrohan
1032
460k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
Fireside Chat
paigeccino
39
3.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
830
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
284
13k
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でテストできなか ったの...
ありがとうございました (\(�`◉∨◉´)/)