JUnit4 结合Mockito模拟测试

假设我们要测试一个计算器程序 CalculatorApplication,但是该程序依赖于 CalculatorService 实现具体的计算过程。

代码如下:public interface CalculatorService {

public double add(double input1, double input2);

public double subtract(double input1, double input2);

public double multiply(double input1, double input2);

public double divide(double input1, double input2);

}

public class CalculatorApplication {

private CalculatorService calcService;

public void setCalculatorService(CalculatorService calcService) {

this.calcService = calcService;

}

public double add(double input1, double input2) {

return calcService.add(input1, input2);

}

public double subtract(double input1, double input2) {

return calcService.subtract(input1, input2);

}

public double multiply(double input1, double input2) {

return calcService.multiply(input1, input2);

}

public double divide(double input1, double input2) {

return calcService.divide(input1, input2);

}

}

问题来了:在测试时,我们可能并没有 CalculatorService 这个接口的具体实现类,例如 CalculatorServiceImpl。

因此我们需要在测试时模拟 CalculatorService 这个接口的行为。

此时我们使用 mockito 来模拟行为。

mockito 可以通过注解的方式来使用:

@RunWith(MockitoJUnitRunner.class):指定 Test Runner

@InjectMocks:Mark a field on which injection should be performed. 标识一个变量,该变量会被注入一个 Mock。例如 CalculatorApplication 会被注入一个 CalculatorService 的实现。

注意:CalculatorApplication 中需要定义一个 set 方法来注入。

@Mock:Mark a field as a mock. 标识一个变量,该变量会被 Mock。例如 CalculatorService 。

在标记出 Mock 后,可以通过 when 来模拟该 Mock 的行为。

示例如下:import org.junit.Assert;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.mockito.InjectMocks;

import org.mockito.Mock;

import org.mockito.runners.MockitoJUnitRunner;

import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)

public class Mockito_Test {

@InjectMocks

CalculatorApplication calculatorApplication = new CalculatorApplication();

@Mock

CalculatorService calcService;

@Test

public void testAdd() {

// 模拟 CalculatorService 的行为

when(calcService.add(10.0, 20.0)).thenReturn(30.00);

// 测试

Assert.assertEquals(calculatorApplication.add(10.0, 20.0), 30.0, 0);

}

}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试工具频道!

java 计算器 junit测试_测试工具之JUnit4 结合Mockito模拟测试代码相关推荐

  1. java 计算器 junit测试_Java Junit测试

    使用junit做测试目的是尽量早的发现程序的bug,一个bug隐藏的时间越久,修复他的代价就越大. 1.Junit简介: Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回 ...

  2. java 计算器 junit测试_Java中Junit4测试实例

    Junit简介 JUnit: JUnit是一个Java语言的单元测试框架. 单元测试:单元测试的目的不是证明你的程序是正确的,而是证明你的程序没有错误 目前流行的版本3.8和4.0 Junit3.X: ...

  3. Java计算器按钮间隔_获得声音按钮的最佳方法按Java计算器?

    我是一名学习Java的学生,正在为我的简历工作一个独立的项目.我决定做一个Java计算器,因为我知道构成它的大多数组件.我不知道怎么做的一件事是按下按钮添加声音.对于Audiostream输入内容,我 ...

  4. java 下载junit的jar包_junit4下载-Junit4.11完整包【附使用方法】-东坡下载

    JUnit测试框架将测试更加便捷和容易,编写测试代码也是简单.明了,功能强大. Junit4.11jar包源码文档 包含hamcrest-core-1.3.jar junit-4.7.jar juni ...

  5. 2019年计算机学业水平测试填空题,2019年计算机学业水平模拟测试选择题80题Word(含参考答案)...

    2019年计算机学业水平模拟测试选择题80题Word(含参考答案) 2019年计算机学业水平测试选择题(10大题80小题) 第一题: 1.1."妈妈把鹏鹏的照片放在快盘里,远方的爷爷奶奶也能 ...

  6. java 三维场景图_一个Java3D简单三维场景图,测试你的Java3D开发运行环境。

    保存文件,命名为UglyCube.java 这是个彩色六面体,可以用鼠标左键旋转,右键拖动,摁下滚轮前后移动缩放. 直接在命令行下转到文件目录,像普通java程序那样编译解释执行.用以测试Java3D ...

  7. fiddler弱网测试_移动端质量体系之弱网测试

    Hi-新朋友,记得点蓝字关注我们哟 最近面试了不少同学,在答移动端质量体系时,都会说到兼容性测试.功能测试等等,但是几乎没有同学会提起弱网测试.其实弱网测试作为健壮性测试的重要部分,对于移动端测试来说 ...

  8. monkey测试_爱码小士丨 APP稳定性测试(附视频详解)

    在实际的测试过程中,主要是对系统的功能来进行测试,用于校验功能的正确性 还需要考虑到系统在未修改的状态下,是否能够稳定运行,即崩溃.闪退.重启.系统异常等等等地情况 在APP中,稳定性测试一般是交由M ...

  9. 有同学问我Java工程师怎么入门?我马上甩出C认证模拟测试推荐给他!

    最近,互联网行业开始秋招爆发! 许多互联网大厂都在进行大规模地扩招:阿里官宣这次秋招是"史上最大规模校招":字节跳动仅仅是提前批,便放出4000+offer...... 此外,&q ...

  10. linux测试读写的工具,Linux 下的硬盘读写速度测试工具

    Linux 下的硬盘读写速度测试工具 执行一下以下命令看看你服务器的磁盘性能如何. hdparm -Tt /dev/sda 以下是 2块 希捷 ES2 SATA 500G 做 Raid0 的速度 [r ...

最新文章

  1. 将C++里的Mat矩阵保存并由matlab提取分析
  2. 014 怪物过滤的设计和实现
  3. kindeditor编辑器和图片上传独立分开的配置细节
  4. 假如你学过高数,那你这一辈子都不会忘记这个人
  5. OSL LLVM 3.3 Related Changes
  6. xml 连表查询(2) --自关联! 查询父类name,显示父类下的所有子类
  7. 自动驾驶——驾驶员反应时间的文献调研
  8. c语言链表做歌手比赛系统,大型实验报告(歌手比赛系统)
  9. 视频教程_Mastercam2017车削视频教程,数控车床编程视频教程,vericut车床仿真视频...
  10. INTELIED,PCIIEDX, ATAPI,Disk.sys的关系
  11. 视频接口的种类及数据类型
  12. 普通计算机硬件cpu,cpu怎么看型号 教你怎么看电脑cpu型号(软件+硬件)
  13. java 合并excel单元格
  14. Java Spring MVC框架 VIII 之 Spring MVC拦截器
  15. 今天跟好朋友的一段超长爆笑聊天记录(Space搬家)
  16. Virtualbox源码分析17 APIC虚拟化2.APIC设备模拟
  17. Go使用grpc+http打造高性能微服务
  18. 为什么要写引言,引言的目的是啥?
  19. pycharm 同一个目录下导入py文件时,模块下方出现红色波浪线时如何解决
  20. paypal里的钱怎么取出来?

热门文章

  1. Django2.1简介及安装
  2. 在ubuntu 上安装pycharm
  3. Java TCP协议传输
  4. SQL ISNULL 函数
  5. Makefile--基本规则(零)
  6. PacketFence ZEN 4.0.1 发布,网络接入控制
  7. Entity Framework之问题收集
  8. Obsolete属性用法
  9. E-BERT: 电商领域语言模型优化实践
  10. 【论文分享】ACL 2020 多模态相关任务分享