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
180
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
890
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
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
380
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
datadog dash 2025 LLM observability for reliability and stability
ivry_presentationmaterials
0
110
KotlinConf 2025 現地で感じたServer-Side Kotlin
n_takehata
1
230
エラーって何種類あるの?
kajitack
5
310
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
1
120
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
680
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
46
30k
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
130
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
250
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
470
Featured
See All Featured
Navigating Team Friction
lara
187
15k
How GitHub (no longer) Works
holman
314
140k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Unsuck your backbone
ammeep
671
58k
Docker and Python
trallard
44
3.4k
Six Lessons from altMBA
skipperchong
28
3.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
KATA
mclloyd
29
14k
Rails Girls Zürich Keynote
gr2m
94
14k
For a Future-Friendly Web
brad_frost
179
9.8k
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!