轉載自 這裡
EasyMock and Mock Objects Overview :
接下來的文章必須前提在你知道或用過 JUnit, 如果你對 JUnit 不熟悉的話, 可以先閱讀 JUnit Tutorial 這邊的教學.
- Testing and Mock Objects
Unit testing 被定義於與對類別進行測試進行區隔 (Unit test 通常是 Method based). 設計一個Java 類別通常會與其他 Java 類別相依. 而 Mock 物件就像一個 dummy 介面或類別用來當作你要測試方法的參數而該 Mock 物件會有該測試類別預期的行為或回傳值. 而夠過該 Mock 類別物件可以使你在進行測試時不會與外部類別相依. 舉的例子原本你的類別需要透過 DB access 來取的測試資料, 而你可以透過 Mock 類別來提供你的類別所需的測試資料來避免與 DB 的相依性.
因此你在進行 Unit 測試時, 為了避免連整個 DB 連線都測到, 最好的方法就是透過定義的 Mock 類別提供欲測試的類別來擺脫環境或數據的相依性, 進而獨立的測試你想要測試的方法或類別. 因此有了 Mock framework 來模擬這個過程.
- EasyMock
EasyMock 是一個熱門的 Mock framework, 透過它你可以很方便的和 JUnit 進行整合, 底下將會舉一個使用該 Mock framework 的範例進行說明.
Using Easy Mock and Junit :
在開始範例前, 先進行環境的設置, 首先到EasyMock 官方網頁下載 EasyMock. 並將 easymock.jar 加入到你的 classpath. 接著還要下載 ASM 與 cglib 的相依類別並加入到你的 classpath :
接著透過你的 IDE 新建一個 Java Project 並建立以下類別. 而我們將對 IncomeCalculator 類別進行測試, 但該類別相依於另一個介面ICalcMethod 與列舉 EPosition :
透過方法 expect 告訴 easy mock 去建立對應的方法與該方法需要的參數. 而 andReturn 方法定義了該方法的回傳值. 而方法 times 定義了Mock object 的該方法會被呼叫幾次. 而方法 reply 則告訴framework 建立的 Mock object 生效並於接下來的執行過程透過方法 verify 來確認你的 Mock Object 是否如你預期的被執行, 底下是 JUnit 的執行結果 :
This is a blog to track what I had learned and share knowledge with all who can take advantage of them
標籤
- [ 英文學習 ]
- [ 計算機概論 ]
- [ 深入雲計算 ]
- [ 雜七雜八 ]
- [ Algorithm in Java ]
- [ Data Structures with Java ]
- [ IR Class ]
- [ Java 文章收集 ]
- [ Java 代碼範本 ]
- [ Java 套件 ]
- [ JVM 應用 ]
- [ LFD Note ]
- [ MangoDB ]
- [ Math CC ]
- [ MongoDB ]
- [ MySQL 小學堂 ]
- [ Python 考題 ]
- [ Python 常見問題 ]
- [ Python 範例代碼 ]
- [心得扎記]
- [網路教學]
- [C 常見考題]
- [C 範例代碼]
- [C/C++ 範例代碼]
- [Intro Alg]
- [Java 代碼範本]
- [Java 套件]
- [Linux 小技巧]
- [Linux 小學堂]
- [Linux 命令]
- [ML In Action]
- [ML]
- [MLP]
- [Postgres]
- [Python 學習筆記]
- [Quick Python]
- [Software Engineering]
- [The python tutorial]
- 工具收集
- 設計模式
- 資料結構
- ActiveMQ In Action
- AI
- Algorithm
- Android
- Ansible
- AWS
- Big Data 研究
- C/C++
- C++
- CCDH
- CI/CD
- Coursera
- Database
- DB
- Design Pattern
- Device Driver Programming
- Docker
- Docker 工具
- Docker Practice
- Eclipse
- English Writing
- ExtJS 3.x
- FP
- Fraud Prevention
- FreeBSD
- GCC
- Git
- Git Pro
- GNU
- Golang
- Gradle
- Groovy
- Hadoop
- Hadoop. Hadoop Ecosystem
- Java
- Java Framework
- Java UI
- JavaIDE
- JavaScript
- Jenkins
- JFreeChart
- Kaggle
- Kali/Metasploit
- Keras
- KVM
- Learn Spark
- LeetCode
- Linux
- Lucene
- Math
- ML
- ML Udemy
- Mockito
- MPI
- Nachos
- Network
- NLP
- node js
- OO
- OpenCL
- OpenMP
- OSC
- OSGi
- Pandas
- Perl
- PostgreSQL
- Py DS
- Python
- Python 自製工具
- Python Std Library
- Python tools
- QEMU
- R
- Real Python
- RIA
- RTC
- Ruby
- Ruby Packages
- Scala
- ScalaIA
- SQLAlchemy
- TensorFlow
- Tools
- UML
- Unix
- Verilog
- Vmware
- Windows 技巧
- wxPython
訂閱:
張貼留言 (Atom)
[Git 常見問題] error: The following untracked working tree files would be overwritten by merge
Source From Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 # git clean -d -fx 方案2: 今天在服务器上 gi...
-
前言 : 為什麼程序管理這麼重要呢?這是因為: * 首先,本章一開始就談到的,我們在操作系統時的各項工作其實都是經過某個 PID 來達成的 (包括你的 bash 環境), 因此,能不能進行某項工作,就與該程序的權限有關了。 * 再來,如果您的 Linux 系統是個...
-
屬性 : 系統相關 - 檔案與目錄 語法 : du [參數] [檔案] 參數 | 功能 -a | 顯示目錄中個別檔案的大小 -b | 以bytes為單位顯示 -c | 顯示個別檔案大小與總和 -D | 顯示符號鏈結的來源檔大小 -h | Hum...
-
來源自 這裡 說明 : split 是 Perl 中非常有用的函式之一,它可以將一個字串分割並將之置於陣列中。若無特別的指定,該函式亦使用 RE 與 $_ 變數 語法 : * split /PATTERN/,EXPR,LIMIT * split /...
沒有留言:
張貼留言