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
テストを書くのが嫌いな君へ #m3dev
Search
Kazuhiro Sera
August 30, 2013
Programming
0
200
テストを書くのが嫌いな君へ #m3dev
テストコード自動生成ツールの紹介です。
Kazuhiro Sera
August 30, 2013
Tweet
Share
More Decks by Kazuhiro Sera
See All by Kazuhiro Sera
5 tips to build long-lasting Scala OSS (cont’d)
seratch
0
120
5 tips to build long-lasting Scala OSS
seratch
1
190
ScalikeJDBC / Skinny ORM Beginners' Guide
seratch
5
130k
All I learned while working on a Scala OSS project for over six years #ScalaMatsuri
seratch
1
900
What I learned by creating 'Scala on Rails' #trbmeetup
seratch
0
190
Scala on Rails @ Scalae by the Bay 2016 #scalae
seratch
1
1.1k
Contributing to Scala OSS from East Asia #ScalaMatsuri
seratch
0
1.2k
Skinny 2 Update
seratch
0
120
Future on Servlet #scala_ks
seratch
0
540
Other Decks in Programming
See All in Programming
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
830
JSONataを使ってみよう Step Functionsが楽しくなる実践テクニック #devio2025
dafujii
0
380
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.5k
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
18
9.5k
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
18
9.8k
「待たせ上手」なスケルトンスクリーン、 そのUXの裏側
teamlab
PRO
0
300
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
880
【第4回】関東Kaggler会「Kaggleは執筆に役立つ」
mipypf
0
1k
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
4
1.3k
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
420
速いWebフレームワークを作る
yusukebe
5
1.7k
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
110
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
520
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Practical Orchestrator
shlominoach
190
11k
Speed Design
sergeychernyshev
32
1.1k
The Cult of Friendly URLs
andyhume
79
6.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Unsuck your backbone
ammeep
671
58k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Transcript
テストを書くのが 嫌いな君へ #m3dev Kazuhiro Sera @seratch
- テスタビリティが考慮されていないものをメンテ している(例:SerlvetFilter、生 jsp、生 PHP、 CGI・・) - ユニットテスト≠ QA、全体の工数が増えるだけ (という近視眼的な考え方)
- 書き捨てのスクリプトまで書くの? - この辺の話題は今日はスコープ外 なぜテストを書かないのか?
それだけじゃない - 心理的障壁(ぶっちゃけ面倒)、〆切 - コーディング量は、開発するコードよりテスト コードの方が多くなる - 普段からテストコードを書いていないと、いざと いうとき、テストを効率的に書けない -
だから書かない?
◯◯書くの面倒・・ - 「Java 書くの面倒・・」 “Java は半分以上 IDE に書かせる言語 です(キリッ” -
「テストコード書くの面倒・・」 “テストコードは・・・”
“テストコードも ツールに書かせればいい” (ある程度までは) FA
- 全てを書かせることはできない、あくまでひな 形レベルまで - 「何をテストしたいか」は「何をやりたいか」に よって決まる、人間にしかわからない - とはいえ、テストコードはボイラープレートの 嵐、自動生成に向いている 自動化はできない
Eclipse プラグイン、Maven プラグイン、sh、bat スクリプト http://junithelper.org/ JUnit Helper (Java)
Eclipse プラグイン、Maven プラグインを使った デモをします Demo
- getter/setter 無視、型毎に引数宣言・パターン 網羅をカスタマイズ可能 - モックを使ったひな形(Mockito、JMock、 EasyMock、JMockit) - テストを一つも書いてないメソッドを自動検出し てテストを書くことを強制する
- テストが足りなかったら追記してくれる 良いところ
- メソッドに対してテストを書いている →API 設計が適切ならそれ自体は有効、もちろ んこれだけで十分ではない - typeという無益なテストメソッド →テスト 0 件のクラスを
JUnit が許容しないこ とへの対応だが、選択可能にしたい - テストメソッドの名前が独特すぎる →細かくカスタマイズできる - IntelliJ IDEA のプラグインがない →そのうち作りたい・・ 悪いところ
rspec-kickstarter (Ruby)
- gem install rspec-kickstarter - rspec-kickstarter というスクリプトにパスが通 ります - rspec-kickstarter
-h 参照 スクリプトつきの RubyGem です
実際に社内のプロジェクトに rspec-kickstarter を実行してみる・・・ Demo
- public なメソッドに対して一つ以上のテストを 書かせる - Rails モードで実行すると Rails の事情に合わ せたテストコードが生成される(現状は
controller、helper のみ) - ERB のテンプレートを差し替え可能 良いところ
- ERB カスタマイズの仕方が微妙 →もう少しよい形を提供したいとは思っていま す、プラグイン機構とか - Rails 連携が弱い →プラグイン機構ができれば、もっとリッチな対 応を
3rd party でつくれるはず 悪いところ
- 自動生成で労力が減らせます - TODO つきのテストコードを目の前にすると ちゃんと書き換えたい衝動が湧いてきて「テスト 書くモード」に切り替えやすいです - 使ってみてフィードバックがあればお気軽にど うぞ
Happy Testing!