Mockito
安利:http://www.lagmonster.org/docs/vi.html
有数据说30%~70%的代码问题都可以通过诸如CheckStyle
/FindBugs
这类静态检查工具发现,如果这个统计数据是成立的,那么我感觉至少90%以上的Bug都可以通过单测发现。其实还可以这样做一个有意思的分类,静态检查工具发现的是技术上的问题,单测则专注于发现业务上的问题。
最近越来越青睐于Mockito,群众的眼睛是雪亮的,StackOverFlow上的各种 Mockito Vs xxx 的比较都是前者占了上风,用了这么久,越来越发现一件事:
如果你没有用Mock工具写测试代码,要么是你的工程太简单了,要么是你根本不会写单测。
不能在一页用 Why How 等几个关键点说明白的工具都不是好工具。看看Mockito。
本质来讲,测试无非是验证在某种特定输入下的输出或者是行为。这里不说How
的细节,只谈关键点。
- Stubbing。Mockito.when().then().throw()…
- Verify。Mockito.verify().someMethod(),同时还可以验证发生次数times(1)或者never()更有甚者timeout()。这里还有一个比较有意思的点是可以用ArgumentCaptor得到调用参数的行为结果,这种主要用来做mock对象某个连续调用方法传入参数的验证。
- InOrder。同一对象的不同方法或者不同对象的Order verify。