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
Unit Test Introduction.pdf
Search
hatelove
April 30, 2012
Programming
3
7.4k
Unit Test Introduction.pdf
單元測試簡介以及mock的意義
hatelove
April 30, 2012
Tweet
Share
More Decks by hatelove
See All by hatelove
1. 在沙箱中開發
hatelove
12
3k
BDD in .NET - TDD 在實務上的最後一塊拼圖
hatelove
4
2.8k
OO training 基本原則整理
hatelove
2
5.2k
OO training homework 3 review and summary
hatelove
1
11k
OO training homework 2 review and summary
hatelove
1
4.6k
OO training homework 1 review and summary
hatelove
1
8k
Object Oriented Training - Session 4
hatelove
1
5.1k
Object Oriented Training - Session 3
hatelove
1
11k
Object Oriented Training - Session 2
hatelove
1
4.8k
Other Decks in Programming
See All in Programming
XP, Testing and ninja testing
m_seki
3
200
A2A プロトコルを試してみる
azukiazusa1
2
1.2k
5つのアンチパターンから学ぶLT設計
narihara
1
110
Deep Dive into ~/.claude/projects
hiragram
8
1.5k
datadog dash 2025 LLM observability for reliability and stability
ivry_presentationmaterials
0
110
Beyond Portability: Live Migration for Evolving WebAssembly Workloads
chikuwait
0
390
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
160
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
150
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
1
420
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
190
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
690
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
580
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Designing for Performance
lara
609
69k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Balancing Empowerment & Direction
lara
1
370
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
How GitHub (no longer) Works
holman
314
140k
Transcript
Joey Chen 2011/7/6 Unit Test Introduction
- 2 - 常見的問題 開發常 見問題 要到真實環境 方能測試程式 無誤 頁面發生錯誤,
到底是誰錯了? 交付的程式, 到底測過哪些 東西了? 我改了這支程 式,會不會害 別的程式掛掉? 怎麼讓UI, Service, Data Access平行開 發?
- 3 - 解決方式 Unit Test Unit Test使用 mock object
來模擬外部回 傳的資料 把input值當做 test case,跑 一次Unit Test 交付的程式, 包括Unit Test 程式碼 改完程式就跑 一次Unit Test 吧 Unit Test中使 用mock object,達到 關注點分離 模擬真實環境 針對案例,所有 單元可獨立測試 明確知道哪些程 式碼有被測到 迴歸測試保護 遵循介面
- 4 - 什麼是Unit Test Unit Test的定 義 最小的測試單位 外部相依性為零
不具備邏輯 測試案例之間 相依性為零 一個測試案例 只測一種方法
- 5 -
- 6 - 如何撰寫Unit Test
Demo
- 8 - 我的程式沒辦法測? • 為什麼我的console跟web site沒辦法跑Unit Test? • 為什麼我沒法子決定expect跟目標return的值?
• 別人的service或DB還沒準備好,我沒法測?
- 9 - • 測試目標需封裝成DLL • 測試方法內容,需不相依於外部類別 • 只能測試Public的類別方法 Unit
Test的前提 測試目標方法內容 類別庫 Unit test 資料庫 外部 Service 測試專案 File
Demo 與外部類別相依的方法
- 11 - 如何與外部類別獨立
- 12 - 模擬外部類別 Stub • 定義預期回傳值 Mock • 定義預期回傳
值 • 可驗證呼叫次 數、順序以及 相關參數
- 13 - Stub Class原理
- 14 - Stub Class示意圖
- 15 - Mock framework做的事 • 將Stub類別透過Dynamic proxy打包 • Run
time才產生Stub類別,決定回傳值,用完即丟
Demo Mock framework
- 17 - 好的Unit Test Features • 執行速度快 • Unit
test程式碼應該很短 • Naming應該要可以看出要測的東西 • Unit test內容就類似code的spec • 應該與外界獨立 • 應該要能自動化
- 18 - 好的Unit Test Features (cont.) • 應該在任何環境下都可以測試 •
一次只測一件事 • IoC設計 • 失敗應該可以馬上知道出了什麼問題 • 設計test case要考量是否有boundary需要測試
- 19 - 結論 • Unit Test撰寫並不困難 • 讓架構與設計能力獲得提昇 •
Unit Test可以保護自己 • 可以循序漸進的讓現有系統固若金湯 • 可以平行開發,不用依賴外部元件
Thanks for your listening Q & A