junit mockito

这次,我想对测试框架Mockito进行概述。 毫无疑问,这是用于测试Java代码的最受欢迎的工具之一。 我已经对Mockito的竞争对手EasyMock进行了概述。 这篇文章将基于有关EasyMock的示例应用程序。 我的意思是代表咖啡机功能的类。

使用Mockito准备测试

通常,我将使用Maven进行项目设置。 因此,要使Mockito在项目中可用,我需要在pom.xml文件中添加以下依赖项:

<dependencies><dependency><groupid>org.mockito</groupid><artifactid>mockito-all</artifactid><version>1.9.5</version></dependency><dependency><groupid>junit</groupid><artifactid>junit</artifactid><version>4.11</version></dependency></dependencies>

请注意,Mockito的正常功能不需要JUnit,可以用相同的方式使用TestNG来代替它。 因此,您可以根据自己的决定使用JUnit或TestNG。

让我们进一步。 如前所述,本文中的所有测试都是针对EasyMock帖子中的示例应用程序编写的。 您可以从此处仅阅读“应用程序代码”部分。 这足以了解测试的主题。

Mockito和JUnit测试

我想从关于Mockito框架几句话开始本节。 绝对可以在Mockito的帮助下完成测试中希望做的所有事情。 您可以在清除API的帮助下创建模拟,存根,进行验证以及所有这些操作。
现在该看看使用Mockito进行单元测试的样子了。

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;import com.app.data.Portion;
import com.app.exceptions.NotEnoughException;
import com.app.mechanism.CoffeeMachine;
import com.app.mechanism.interfaces.ICoffeeMachine;
import com.app.mechanism.interfaces.IContainer;@RunWith(MockitoJUnitRunner.class)
public class CoffeeMachineTest {ICoffeeMachine coffeeMachine;@MockIContainer coffeeContainer;@MockIContainer waterContainer;@Beforepublic void setUp() {coffeeMachine = new CoffeeMachine(coffeeContainer, waterContainer);}@Afterpublic void tearDown() {coffeeContainer = null;waterContainer = null;coffeeMachine = null;        }@Testpublic void testMakeCoffe() throws NotEnoughException {when(coffeeContainer.getPortion(Portion.LARGE)).thenReturn(true);when(waterContainer.getPortion(Portion.LARGE)).thenReturn(true);assertTrue(coffeeMachine.makeCoffee(Portion.LARGE));}@Testpublic void testNotEnoughException() throws NotEnoughException {when(coffeeContainer.getPortion(Portion.SMALL)).thenReturn(false);when(waterContainer.getPortion(Portion.SMALL)).thenReturn(true);assertFalse(coffeeMachine.makeCoffee(Portion.SMALL));}}

我将用几句话来解释测试类中的情况。 我正在测试咖啡机,为此,我为咖啡容器和水容器创建了模拟。 进一步在测试中,我将为模拟定义一些行为,并根据这台咖啡机执行预期的操作。

...@MockIContainer coffeeContainer;@MockIContainer waterContainer;
...

在上面的代码中,我声明了两个模拟。 以这种方式创建模拟需要将@RunWith(MockitoJUnitRunner.class)批注应用于测试类。 或者,您可以使用MockitoAnnotations.initMocks(testClass); 在运行任何测试之前,例如,您可以将此代码段放入@Before注释的方法中。

...
when(coffeeContainer.getPortion(Portion.LARGE)).thenReturn(true);
...

在Mockito中定义模拟的行为非常方便。 您可以指定在调用特定方法后应返回的内容。 注意,我在测试类中进行了几次静态导入

摘要

Mockito框架征服了我的心。 这非常方便,其API清晰,使用简便。 Mockito包含许多在单元测试开发过程中可能需要的方法。 当然,一篇文章太小而无法描述Mockito的所有功能,因此我建议您使用官方文档的跟随链接进行更深入的研究。

参考: Fruzenshtein的便笺博客中来自我们的JCG合作伙伴 Alexey Zvolinskiy的JUnit和Mockito合作 。

翻译自: https://www.javacodegeeks.com/2013/05/junit-and-mockito-cooperation.html

junit mockito

junit mockito_JUnit和Mockito合作相关推荐

  1. JUnit和Mockito合作

    这次,我想对测试框架Mockito进行概述. 毫无疑问,这是用于测试Java代码的最受欢迎的工具之一. 我已经对Mockito的竞争对手EasyMock进行了概述. 这篇文章将基于有关EasyMock ...

  2. junit mockito_使用JUnit 5在Mockito中方便地进行模拟–官方方式

    junit mockito 从版本2.17.0开始,如果使用了JUnit 5, Mockito提供了官方(内置)支持来管理模拟生命周期. 入门 为了利用集成的优势,需要在JUnit 5的junit-p ...

  3. 使用JUnit 5在Mockito中方便地进行模拟–官方方式

    从版本2.17.0开始,如果使用JUnit 5, Mockito提供了官方(内置)支持来管理模拟生命周期. 入门 为了利用该集成,需要在JUnit 5的junit-platform-engine旁边添 ...

  4. junit mockito_从工作中清除代码–使用JUnit 5,Mockito和AssertJ编写可执行规范

    junit mockito 可执行规范是也可以用作设计规范的测试. 通过启用通用语言(在DDD世界中,这也称为无处不在的语言 ),它们使技术和业务团队能够进入同一页面. 它们充当代码的未来维护者的文档 ...

  5. 从工作中清除代码–使用JUnit 5,Mockito和AssertJ编写可执行规范

    可执行规范是可以用作设计规范的测试. 通过启用公共语言(在DDD世界中,这也称为无处不在的语言 ),它们使技术和业务团队能够进入同一页面. 它们充当代码的未来维护者的文档. 在本文中,我们将看到一种编 ...

  6. java junit mock_使用Mockito进行Java的Mock测试

    测试替身 dummy用于传递,不会真正使用,例如用于填充的方法的参数列表. Fake有简单实现,但通常被简化,比如在内存数据库,而不是真正的数据库中使用. Stub是接口或类中部分实现,测试时使用其实 ...

  7. JUnit与EasyMock合作

    开发人员始终需要注意所产生的代码. 在实施新功能或修复某些错误之后,应确保它们能够正常工作. 至少可以借助单元测试来实现. 由于此博客致力于Java编程语言,因此今天我将撰写有关JUnit 4.1和E ...

  8. mockito 外部接口_mockito 初识

    为什么需要模拟? 在我们一开始学编程时,我们所写的对象通常都是独立的.hello world之类的类并不依赖其他的类(System.out除外),也不会操作别的类.但实际上软件中是充满依赖关系的.我们 ...

  9. mockito 外部接口_【IDEA开发SpringBoot2.0】使用Mockito进行常规接口测试#05

    文章目录 前言[^1] 什么是Mockito? 什么是Mock? 为什么要使用Mock? 用PostMan与用Mock有什么区别? 正题 使用Mockito做一个模拟测试 编写代码 开始测试 代码讲解 ...

最新文章

  1. 机器学习的数学基础 - 常见分布函数
  2. Android数据存储之SharedPreferences
  3. CentOS 6.3定制自动安装
  4. docker命令的组合使用
  5. sparkcore写mysql_spark读写mysql
  6. 安装SQL Server 2005时,出现“SQL Server 服务无法启动。……”提示的解决方法
  7. php mysql_fetch_array 函数大全,深入探讨PHP mysql_fetch_array()函数
  8. 微信养鸡领鸡蛋小程序源码
  9. 机器视觉算法与应用001
  10. GBK、UTF-8、ASCLL、url编码
  11. 人生之路1.20代码 第二部分
  12. 坚定文化新自信 提升文化软实力
  13. matlab | 程序运行时间
  14. 求个单片机控制双向可控硅调光电路电压220V
  15. P1457 城堡 The Castle(DFS+染色)
  16. [android] 手机卫士来电显示号码归属地
  17. 网页上的微服务—微前端架构实践
  18. VO DO DTO TO的区别:
  19. 天下熙熙皆为利来,天下攘攘皆为利往
  20. 字节跳动2019春招研发部分编程题汇总【题解】

热门文章

  1. 图解elasticsearch原理转载自
  2. ByteBuffer的使用
  3. Java和Android中的注解
  4. Oracle入门(十二)之SQL的DDL
  5. 班级日常分享,一天一瞬间
  6. javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
  7. 复变函数画图cosz图像_用matlab绘制x=(1+cosu)cosv,y=(1+cosu)sinv,z=sinu图像?
  8. java国际化——资源包
  9. 匿名内部类与Lambda表达式
  10. aws上负载均衡器标组端口_AWS CloudFormation:目标组没有关联的负载均衡器