Java单元测试(mock+junit)

进入新公司之后,需要技术支持一下接口单元测试。

了解了一下mock和junit具体是干什么的,以及mock和junit有没有关系:

目前应用比较普遍的java单元测试工具 junit4+Mock(Mockito /jmock / powermock)或Stub(用得较少,一般不推荐)

问题:为什么需要mock或stub?它与junit什么关系?

在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,记录Log, 文件系统 之类的)。 而我们没法控制这些外部依赖的对象。  为了解决这个问题,我们需要用到Stub和Mock来模拟这些外部依赖的对象,从而控制它们。

JUnit是单元测试框架,可以轻松的完成关联依赖关系少或者比较简单的类的单元测试,但是对于关联到其它比较复杂的类或对运行环境有要求的类的单元测试,模拟环境或者配置环境会非常耗时,实施单元测试比较困难。而这些“mock框架”Mockito 、jmock 、 powermock、EasyMock),可以通过mock框架模拟一个对象的行为,从而隔离开我们不关心的其他对象,使得测试变得简单。(例如service调用dao,即service依赖dao,我们可以通过mock dao来模拟真实的dao调用,从而能达到测试service的目的。)

模拟对象(Mock Object)可以取代真实对象的位置,用于测试一些与真实对象进行交互或依赖于真实对象的功能,模拟对象的背后目的就是创建一个轻量级的、可控制的对象来代替测试中需要的真实对象,模拟真实对象的行为和功能。

了解过后,查看项目中的mock发现与真正的mock框架不一样。截图如下:

项目中是使用的是spring集成自带的mock实现模拟对象。

感谢原文博主:https://www.cnblogs.com/wuyun-blog/p/7081548.html

原文地址:https://www.cnblogs.com/mangwusuozhi/p/13646643.html