0%

MockWebServer介绍

MockWebServer是square出品的跟随okhttp一起发布,用来Mock服务器行为的库。MockWebServer使用在单元测试中,专门用来测试http请求。其原理是启动了一个本地web server,监听了本地某个端口。所以在测试的时候,需要把请求的url替换为MockWebServer提供的地址,然后web server会handle请求,记录请求,根据预设的stubbing进行反馈。MockWebServer提供接口,让我们可以在发起请求之后,验证请求是否和预期的一样,比如验证header、path等等。

阅读全文 »

mock和Mockito的关系

在软件开发中提及”mock”,通常理解为模拟对象。

为什么需要模拟? 在我们一开始学编程时,我们所写的对象通常都是独立的,并不依赖其他的类,也不会操作别的类。但实际上,软件中是充满依赖关系的,比如我们会基于service类写操作类,而service类又是基于数据访问类(DAO)的,依次下去,形成复杂的依赖关系。

单元测试的思路就是我们想在不涉及依赖关系的情况下测试代码。这种测试可以让你无视代码的依赖关系去测试代码的有效性。核心思想就是如果代码按设计正常工作,并且依赖关系也正常,那么他们应该会同时工作正常。

有些时候,我们代码所需要的依赖可能尚未开发完成,甚至还不存在,那如何让我们的开发进行下去呢?使用mock可以让开发进行下去,mock技术的目的和作用就是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开

阅读全文 »

Moco介绍

在开发过程中,经常会使用到一些http网络接口,而这部分功能通常是由第三方开发团队或者是后端同事进行开发的,在我们开发时不能给我们提供服务,更有甚者,要集成的服务在开发时还不存在。这为我们的联调和测试造成了麻烦,常见的解决方案是搭建一个web server。

为什么要开发Moco这个框架?

具体到模拟服务上,处理的手法也是各种各样,因为服务以HTTP集成居多,无论是Web Service,还是REST,所以,一种典型的做法是,开发一个模拟服务,打成WAR包,部署到一个应用服务器上。而我们知道,一旦牵扯到应用服务器部署,就是非常耗时的,部署的时间量级通常是分钟级的。而且,模拟服务器通常不是一次性的工作,我们需要在开发过程中,反复调整,这就进一步增加了维护一个模拟服务器的成本。有的应用服务器是非常消耗资源的,要用专门的机器来部署它。更进一步,如果机器资源有限,团队就只能共享一台机器,这样,即便我为测试自己的部分做一个小的改动,很有可能因为得不到机器的使用权,而要等上几天时间

Moco就是针对这样一个特定的场景而生的。Moco是一个简单搭建模拟服务器的程序库/工具,这个基于 Java 开发的开源项目已经在 Github 上获得了不少的关注。该项目的简介是这样描述自己的:Moco 是一个简单搭建 stub 的框架,主要用于测试和集成。

阅读全文 »