Mockito Hello World
Mockito Hello World
项目配置
repositories { jcenter() }
dependencies { testCompile "org.mockito:mockito-core:1.+" }
apply plugin: 'java'
apply plugin: 'idea' sourceCompatibility = 1.5
version = '1.0' repositories {
mavenCentral()
jcenter()
} dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile "org.mockito:mockito-core:1.8.5"
}

Hello World程序
package com.mengdd.examples.mockito;
public class HelloWorld {
private MyRobot mRobot;
public MyRobot getRobot() {
return mRobot;
}
public void setRobot(MyRobot robot) {
this.mRobot = robot;
}
/**
* This is the method we want to test.
* When there is an robot, this method return the robot's information
* otherwise, return some sorry text
*/
public String sayHello() {
MyRobot robot = getRobot();
if (null != robot) {
return robot.getSomeInfo();
}
return "No robot here, sorry!";
}
/**
* MyRobot class
*/
public static class MyRobot {
/**
* Get some information from somewhere, the implementation may varies
*/
public String getSomeInfo() {
return "Hello World -- From robot";
}
}
}
package com.mengdd.examples.mockito; import org.junit.Test; import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; public class HelloWorldTest {
@Test
public void testSayHelloWhenThereIsRobot() throws Exception {
// We want to test the sayHello() method in the class HelloWorld.
// But we don't care about how MyRobot get its information.(We can treat it as external interface). // Maybe the robot rely on many complicated things.(Although it's simple in this case.)
// And when the robot's actions change in the future, we don't need to change this test case. // We can mock the MyRobot's action to make it simple and just test whether sayHello() can do its own work. // Mock steps
HelloWorld.MyRobot robot = mock(HelloWorld.MyRobot.class); // Mock MyRobot class
String mockInfo = "some mock info";
when(robot.getSomeInfo()).thenReturn(mockInfo); // Set behavior for mock object // real object
HelloWorld helloWorld = new HelloWorld();//This is the real objec we want to test
helloWorld.setRobot(robot);//set the mock robot to real object // execute the target method we want to test
String result = helloWorld.sayHello(); // assert the result is what we want to have
assertThat(result, is(mockInfo));
}
}
@Test
public void testSayHelloWhenThereIsNoRobot() throws Exception {
HelloWorld helloWorld = new HelloWorld();
helloWorld.setRobot(null); String result = helloWorld.sayHello(); assertThat(result, is("No robot here, sorry!"));
}
参考资料
Mockito Hello World的更多相关文章
- Junit mockito 测试Controller层方法有Pageable异常
1.问题 在使用MockMVC+Mockito模拟Service层返回的时候,当我们在Controller层中参数方法调用有Pageable对象的时候,我们会发现,我们没办法生成一个Pageable的 ...
- Junit mockito解耦合测试
Mock测试是单元测试的重要方法之一. 1.相关网址 官网:http://mockito.org/ 项目源码:https://github.com/mockito/mockito api:http:/ ...
- Android 单元测试(junit、mockito、robolectric)
1.运用JUnit4 进行单元测试 首先在工程的 src 文件夹内创建 test 和 test/java 文件夹. 打开工程的 build.gradle(Module:app)文件,添加JUnit4依 ...
- mockito使用心得
前提:pom引用<dependency> <groupId>junit</groupId> <artifactId>junit</artifact ...
- Mock之easymock, powermock, and mockito
easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...
- 用Mockito mock普通的方法
上面的例子是很理想化的状态,但是在实际的开发中,我们需要经常调用一些依赖特定环境的函数或者调用同事写的代码,而同事仅提供了接口.这个时候就需要利用Mockito来协助我们完成测试. 当然,你可以选择e ...
- mock测试框架Mockito
无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访 ...
- Mockito自定义verify参数Matcher
在TDD开发中,也许我们会遇见对一些重要的无返回值的行为测试,比如在用户的积分DB中增加用户的积分,这个行为对于我们的业务具有重要的价值,所以我们也希望能测试覆盖这部分业务价值.这个时候我们就得使用m ...
- Mockito学习资料
官网:http://mockito.org/ https://dzone.com/refcardz/mockito
随机推荐
- 【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- AngularJS之Service(四)
前言 前面我们讲了控制器.过滤器以及指令,这一节我们来讲讲重大内容之一服务和其中涉及到的工厂. 话题 AngularJS中服务可以说是和DI紧密联系在一起,在应用程序中我们可以通过使用服务来共享代码, ...
- 使用ikmv将jar转换为dll,在.NET中直接调用
ikmv百科介绍 ikvm官网 使用ikvm前需要先安装java. ikvm的使用比较简单,到官网下载ikvm需要的组件,解压后在path中配置 %IKVM_HOME%\bin 在cmd中使用命令 i ...
- js 根据屏幕大小调用不同的css文件
原因:屏幕大小不一样,网站看起来总觉得怪怪的,所以,针对不同大小的屏幕,写了不同的css,写完了,要解决的问题就是:怎么根据屏幕的大小来引用不同的CSS,下面就是解决方法了. 解决方法:首先,在hea ...
- swift 中指针的使用UnsafeMutablePointer
在swift中已经弱化了指针的使用,可以这么使用 let s: NSRange = NSMakeRange(, ) let at = UnsafeMutablePointer<NSRange&g ...
- swift中Range的使用书名
在swift中Range有两种用法 1.把字符串转换成NSString来使用 //这里是把swift的字符换转换成了nsstring 使用 let str :NSString = text.strin ...
- 我的Node.js处女作
前言 很高兴我的node.js处女作开发完成了,目前还在优化完善阶段,经历两周的紧张沟通和开发,工作总算搞一段落.选用node.js 一是因为这次的业务逻辑相对来说简单想拿node练练手,二就是相对来 ...
- ASP.NET程序开发范例宝典
在整理资料时发现一些非常有用的资料源码尤其是初学者,大部分是平时用到的知识点,可以参考其实现方法,分享给大家学习,但请不要用于商业用途. 如果对你有用请多多推荐给其他人分享. 点击对应章节标题下载本章 ...
- Linux中解析json---jq
遇到要在Linux上处理json的请求,换了熟悉的环境就抓瞎了,需要用心学习基础知识. jq官网:https://stedolan.github.io/jq 1.install yum ins ...
- Java进击C#——语法之知识点的改进
本章简言 上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知 ...