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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yoshihara
December 19, 2014
Technology
140
0
Share
test-unit-night
社内勉強会でtest-unitについて紹介した時のスライド。
yoshihara
December 19, 2014
More Decks by yoshihara
See All by yoshihara
ちいさなRailsアプリのRroonga
yoshihara
0
620
Other Decks in Technology
See All in Technology
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
240
自立を加速させる神器 - EMOasis #11
stanby_inc
0
140
みんなで作るAWS Tips 100連発 (FinOps編)
schwrzktz
1
300
AWS DevOps Agentはチームメイトになれるのか?/ Can AWS DevOps Agent become a teammate
kinunori
6
740
AndroidアプリとCopilot Studioの統合
nakasho
0
100
Master Dataグループ紹介資料
sansan33
PRO
1
4.6k
最近の技術系の話題で気になったもの色々(IoT系以外も) / IoTLT 花見予定会(たぶんBBQ) @都立潮風公園バーベキュー広場
you
PRO
1
240
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
210
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
The Journey of Box Building
tagomoris
4
2.7k
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
360
AI バイブコーティングでキーボード不要?!
samakada
0
570
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
200
Discover your Explorer Soul
emna__ayadi
2
1.1k
The Curious Case for Waylosing
cassininazir
0
300
Designing for humans not robots
tammielis
254
26k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Being A Developer After 40
akosma
91
590k
AI: The stuff that nobody shows you
jnunemaker
PRO
6
570
Paper Plane
katiecoart
PRO
1
49k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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でテストできなか ったの...
ありがとうございました (\(�`◉∨◉´)/)