之前我拍着胸脯承诺要维护的我博客,因此才有了这篇文章。但是请忘记我的那些承诺,我今天要写的是关于Mockito,这是一个当你写单元测试时经常会用到的对象Mock框架。
介绍
这篇文章假设你已经知道了什么是单元测试以及为什么你要写单元测试。另外,我强烈建议你阅读Martin
Fowler的这篇文章。
常见的场景
有些时候我们需要测试有回调的函数,这意味着它们是异步执行的。这些方法测试起来并不那么容易,使用Thread.sleep(milliseconds)
来等待它们执行完成只能说是一种蹩脚的实现,并且会让你的测试具有不确定性。那么我们如何来对异步函数进行测试呢?Mockito拯救了我们!
翠花,上示例
假设我们有一个实现了DummyCallback
接口的DummyCaller
类,在DummyCaller
中有一个doSomethingAsynchronously()
函数,该函数会调用DummyCollaborator
类的doSomethingAsynchronously(DummyCallback callback)
函数,在调用该函数时将这个callback参数设置为该DummyCaller
对象。当doSomethingAsynchronously(DummyCallback callback)
的任务在后台线程中执行完成之后就会回调这个callback。
还是直接看代码会更容易理解 :
DummyCallback接口 :
public interface DummyCallback {
public void onSuccess(List<String> result); public void onFail(int code);}
- 1
- 2
- 3
- 4
Dum