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.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.8k
Other Decks in Programming
See All in Programming
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
4
1.3k
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
130
CSC307 Lecture 13
javiergs
PRO
0
320
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
140
Docコメントで始める簡単ガードレール
keisukeikeda
1
110
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
400
Windows on Ryzen and I
seosoft
0
250
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
140
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
100
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
2.2k
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
560
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
106
240k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
BBQ
matthewcrist
89
10k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
380
Building AI with AI
inesmontani
PRO
1
790
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How GitHub (no longer) Works
holman
316
140k
Skip the Path - Find Your Career Trail
mkilby
1
76
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
390
Site-Speed That Sticks
csswizardry
13
1.1k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
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