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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hatelove
April 30, 2012
Programming
7.5k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Unit Test Introduction.pdf
單元測試簡介以及mock的意義
hatelove
April 30, 2012
More Decks by hatelove
See All by hatelove
1. 在沙箱中開發
hatelove
12
3k
BDD in .NET - TDD 在實務上的最後一塊拼圖
hatelove
4
2.9k
OO training 基本原則整理
hatelove
2
5.3k
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
8.1k
Object Oriented Training - Session 4
hatelove
1
5.2k
Object Oriented Training - Session 3
hatelove
1
11k
Object Oriented Training - Session 2
hatelove
1
4.9k
Other Decks in Programming
See All in Programming
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Contextとはなにか
chiroruxx
0
290
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.2k
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
5.3k
JavaDoc 再入門
nagise
0
320
Claspは野良GASの夢をみるか
takter00
0
180
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
2
1k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
180
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
260
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
190
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
580
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
710
Into the Great Unknown - MozCon
thekraken
41
2.6k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Discover your Explorer Soul
emna__ayadi
2
1.1k
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