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
CSC307 Lecture 01
javiergs
PRO
0
650
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
7
2.4k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
240
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
150
Jetpack XR SDKから紐解くAndroid XR開発と技術選定のヒント / about-androidxr-and-jetpack-xr-sdk
drumath2237
1
230
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
130
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
450
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
230
マスタデータ問題、マイクロサービスでどう解くか
kts
0
170
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.1k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
100
Designing for humans not robots
tammielis
254
26k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Heart Work Chapter 1 - Part 1
lfama
PRO
3
35k
Darren the Foodie - Storyboard
khoart
PRO
0
2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
How to make the Groovebox
asonas
2
1.9k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
130
Test your architecture with Archunit
thirion
1
2.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