java 计算器 junit测试_测试工具之JUnit4 结合Mockito模拟测试代码
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模拟测试代码相关推荐
- java 计算器 junit测试_Java Junit测试
使用junit做测试目的是尽量早的发现程序的bug,一个bug隐藏的时间越久,修复他的代价就越大. 1.Junit简介: Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回 ...
- java 计算器 junit测试_Java中Junit4测试实例
Junit简介 JUnit: JUnit是一个Java语言的单元测试框架. 单元测试:单元测试的目的不是证明你的程序是正确的,而是证明你的程序没有错误 目前流行的版本3.8和4.0 Junit3.X: ...
- Java计算器按钮间隔_获得声音按钮的最佳方法按Java计算器?
我是一名学习Java的学生,正在为我的简历工作一个独立的项目.我决定做一个Java计算器,因为我知道构成它的大多数组件.我不知道怎么做的一件事是按下按钮添加声音.对于Audiostream输入内容,我 ...
- java 下载junit的jar包_junit4下载-Junit4.11完整包【附使用方法】-东坡下载
JUnit测试框架将测试更加便捷和容易,编写测试代码也是简单.明了,功能强大. Junit4.11jar包源码文档 包含hamcrest-core-1.3.jar junit-4.7.jar juni ...
- 2019年计算机学业水平测试填空题,2019年计算机学业水平模拟测试选择题80题Word(含参考答案)...
2019年计算机学业水平模拟测试选择题80题Word(含参考答案) 2019年计算机学业水平测试选择题(10大题80小题) 第一题: 1.1."妈妈把鹏鹏的照片放在快盘里,远方的爷爷奶奶也能 ...
- java 三维场景图_一个Java3D简单三维场景图,测试你的Java3D开发运行环境。
保存文件,命名为UglyCube.java 这是个彩色六面体,可以用鼠标左键旋转,右键拖动,摁下滚轮前后移动缩放. 直接在命令行下转到文件目录,像普通java程序那样编译解释执行.用以测试Java3D ...
- fiddler弱网测试_移动端质量体系之弱网测试
Hi-新朋友,记得点蓝字关注我们哟 最近面试了不少同学,在答移动端质量体系时,都会说到兼容性测试.功能测试等等,但是几乎没有同学会提起弱网测试.其实弱网测试作为健壮性测试的重要部分,对于移动端测试来说 ...
- monkey测试_爱码小士丨 APP稳定性测试(附视频详解)
在实际的测试过程中,主要是对系统的功能来进行测试,用于校验功能的正确性 还需要考虑到系统在未修改的状态下,是否能够稳定运行,即崩溃.闪退.重启.系统异常等等等地情况 在APP中,稳定性测试一般是交由M ...
- 有同学问我Java工程师怎么入门?我马上甩出C认证模拟测试推荐给他!
最近,互联网行业开始秋招爆发! 许多互联网大厂都在进行大规模地扩招:阿里官宣这次秋招是"史上最大规模校招":字节跳动仅仅是提前批,便放出4000+offer...... 此外,&q ...
- linux测试读写的工具,Linux 下的硬盘读写速度测试工具
Linux 下的硬盘读写速度测试工具 执行一下以下命令看看你服务器的磁盘性能如何. hdparm -Tt /dev/sda 以下是 2块 希捷 ES2 SATA 500G 做 Raid0 的速度 [r ...
最新文章
- 将C++里的Mat矩阵保存并由matlab提取分析
- 014 怪物过滤的设计和实现
- kindeditor编辑器和图片上传独立分开的配置细节
- 假如你学过高数,那你这一辈子都不会忘记这个人
- OSL LLVM 3.3 Related Changes
- xml 连表查询(2) --自关联! 查询父类name,显示父类下的所有子类
- 自动驾驶——驾驶员反应时间的文献调研
- c语言链表做歌手比赛系统,大型实验报告(歌手比赛系统)
- 视频教程_Mastercam2017车削视频教程,数控车床编程视频教程,vericut车床仿真视频...
- INTELIED,PCIIEDX, ATAPI,Disk.sys的关系
- 视频接口的种类及数据类型
- 普通计算机硬件cpu,cpu怎么看型号 教你怎么看电脑cpu型号(软件+硬件)
- java 合并excel单元格
- Java Spring MVC框架 VIII 之 Spring MVC拦截器
- 今天跟好朋友的一段超长爆笑聊天记录(Space搬家)
- Virtualbox源码分析17 APIC虚拟化2.APIC设备模拟
- Go使用grpc+http打造高性能微服务
- 为什么要写引言,引言的目的是啥?
- pycharm 同一个目录下导入py文件时,模块下方出现红色波浪线时如何解决
- paypal里的钱怎么取出来?