junit mockito_JUnit和Mockito合作
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的所有功能,因此我建议您使用官方文档的跟随链接进行更深入的研究。
翻译自: https://www.javacodegeeks.com/2013/05/junit-and-mockito-cooperation.html
junit mockito
junit mockito_JUnit和Mockito合作相关推荐
- JUnit和Mockito合作
这次,我想对测试框架Mockito进行概述. 毫无疑问,这是用于测试Java代码的最受欢迎的工具之一. 我已经对Mockito的竞争对手EasyMock进行了概述. 这篇文章将基于有关EasyMock ...
- junit mockito_使用JUnit 5在Mockito中方便地进行模拟–官方方式
junit mockito 从版本2.17.0开始,如果使用了JUnit 5, Mockito提供了官方(内置)支持来管理模拟生命周期. 入门 为了利用集成的优势,需要在JUnit 5的junit-p ...
- 使用JUnit 5在Mockito中方便地进行模拟–官方方式
从版本2.17.0开始,如果使用JUnit 5, Mockito提供了官方(内置)支持来管理模拟生命周期. 入门 为了利用该集成,需要在JUnit 5的junit-platform-engine旁边添 ...
- junit mockito_从工作中清除代码–使用JUnit 5,Mockito和AssertJ编写可执行规范
junit mockito 可执行规范是也可以用作设计规范的测试. 通过启用通用语言(在DDD世界中,这也称为无处不在的语言 ),它们使技术和业务团队能够进入同一页面. 它们充当代码的未来维护者的文档 ...
- 从工作中清除代码–使用JUnit 5,Mockito和AssertJ编写可执行规范
可执行规范是可以用作设计规范的测试. 通过启用公共语言(在DDD世界中,这也称为无处不在的语言 ),它们使技术和业务团队能够进入同一页面. 它们充当代码的未来维护者的文档. 在本文中,我们将看到一种编 ...
- java junit mock_使用Mockito进行Java的Mock测试
测试替身 dummy用于传递,不会真正使用,例如用于填充的方法的参数列表. Fake有简单实现,但通常被简化,比如在内存数据库,而不是真正的数据库中使用. Stub是接口或类中部分实现,测试时使用其实 ...
- JUnit与EasyMock合作
开发人员始终需要注意所产生的代码. 在实施新功能或修复某些错误之后,应确保它们能够正常工作. 至少可以借助单元测试来实现. 由于此博客致力于Java编程语言,因此今天我将撰写有关JUnit 4.1和E ...
- mockito 外部接口_mockito 初识
为什么需要模拟? 在我们一开始学编程时,我们所写的对象通常都是独立的.hello world之类的类并不依赖其他的类(System.out除外),也不会操作别的类.但实际上软件中是充满依赖关系的.我们 ...
- mockito 外部接口_【IDEA开发SpringBoot2.0】使用Mockito进行常规接口测试#05
文章目录 前言[^1] 什么是Mockito? 什么是Mock? 为什么要使用Mock? 用PostMan与用Mock有什么区别? 正题 使用Mockito做一个模拟测试 编写代码 开始测试 代码讲解 ...
最新文章
- 机器学习的数学基础 - 常见分布函数
- Android数据存储之SharedPreferences
- CentOS 6.3定制自动安装
- docker命令的组合使用
- sparkcore写mysql_spark读写mysql
- 安装SQL Server 2005时,出现“SQL Server 服务无法启动。……”提示的解决方法
- php mysql_fetch_array 函数大全,深入探讨PHP mysql_fetch_array()函数
- 微信养鸡领鸡蛋小程序源码
- 机器视觉算法与应用001
- GBK、UTF-8、ASCLL、url编码
- 人生之路1.20代码 第二部分
- 坚定文化新自信 提升文化软实力
- matlab | 程序运行时间
- 求个单片机控制双向可控硅调光电路电压220V
- P1457 城堡 The Castle(DFS+染色)
- [android] 手机卫士来电显示号码归属地
- 网页上的微服务—微前端架构实践
- VO DO DTO TO的区别:
- 天下熙熙皆为利来,天下攘攘皆为利往
- 字节跳动2019春招研发部分编程题汇总【题解】
热门文章
- 图解elasticsearch原理转载自
- ByteBuffer的使用
- Java和Android中的注解
- Oracle入门(十二)之SQL的DDL
- 班级日常分享,一天一瞬间
- javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
- 复变函数画图cosz图像_用matlab绘制x=(1+cosu)cosv,y=(1+cosu)sinv,z=sinu图像?
- java国际化——资源包
- 匿名内部类与Lambda表达式
- aws上负载均衡器标组端口_AWS CloudFormation:目标组没有关联的负载均衡器