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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
CARTA HOLDINGS エンジニア向け 採用ピッチ資料 / CARTA-GUIDE-for-Engineers
carta_engineering
0
47k
Agent Skillsで実現する記憶領域の運用とその後
yamadashy
2
1.9k
2026年春のAgentCoreアプデ 細かいやつ全部まとめ
minorun365
4
240
Purview Endpoint DLP 動かしてみた
kozakigh
0
420
(きっとたぶん)人材育成や教育のような何かの話
sejima
0
750
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
3
1.4k
Gaussian Splattingの表現力を拡張する — 高周波再構成とインタラクションへのアプローチ —
gpuunite_official
0
180
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
940
RedmineをAIで効率的に使う検証
yoshiokacb
0
120
Oracle Cloud Infrastructure presents managed, serverless MCP Servers for Oracle AI Database
thatjeffsmith
1
340
マンション備え付けのネットワークとLTE回線を組み合わせた ネットワークの安定化の考案
harutiro
1
130
パーソルキャリア IT/テクノロジー職向け 会社紹介資料|Company Introduction Deck
techtekt
PRO
0
190
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Become a Pro
speakerdeck
PRO
31
5.9k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
270
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Balancing Empowerment & Direction
lara
6
1.1k
Crafting Experiences
bethany
1
140
The untapped power of vector embeddings
frankvandijk
2
1.7k
Test your architecture with Archunit
thirion
1
2.2k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
550
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
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でテストできなか ったの...
ありがとうございました (\(�`◉∨◉´)/)