jmockit测试
来源:互联网 发布:淘宝买家金钻好处 编辑:程序博客网 时间:2024/04/30 09:00
本文使用的是jmockit作为测试的基石
系统环境
eclipse
jdk : 1.8
jmockit:1.31
junit:4.12
测试实例
本文没有介绍很多使用方法,仅仅推荐一种个人使用感觉很不错的方法仅供参考
准备代码
如下
@RestControllerpublic class MessageApp { @Autowired private MessageService messageService; public void say(String name) { System.out.println(messageService.say(name)); System.out.println(MessageSay.say(name)); }}
public class MessageSay { public static String say(String name) { return "staic + say " + name; }}
public interface MessageService { String say(String name);}
@Servicepublic class MessageServiceImpl implements MessageService { @Override public String say(String name) { // TODO Auto-generated method stub return "say " + name; }}
普通接口和静态方法测试
测试代码如下
package jmockit.demo.test;import jmockit.demo.MessageService;import jmockit.demo.MessageSay;import mockit.StrictExpectations;import mockit.Tested;import jmockit.demo.MessageApp;import mockit.Injectable;import org.junit.Test;import mockit.integration.junit4.JMockit;import org.junit.runner.RunWith;/** * 类MessageAppTest.java的实现描述:TODO 类实现描述 * * @author xupeng 2017年8月30日 下午6:27:03 */@RunWith(JMockit.class)public class MessageAppTest { @Tested private MessageApp messageApp; @Injectable private MessageService messageService; private String name = "name"; @Test public void test() { new StrictExpectations(MessageSay.class) { { messageService.say(name); result = name; MessageSay.say(name); result = "static demo"; } }; messageApp.say(name); }}
严格顺序测试
StrictExpectations是严格有序的打桩方案,测试方法 messageApp.say(name);中内部执行的每一个服务的每一次方法都需要提前进行打桩。这种方式可以完整严格的按着我们的思维测试代码,按着我们期望的一条总线一直走下去。每一步的信息我们都可以验证。
下面是一个对象验证的实例
projectProductDao.insert(withArgThat(new BaseMatcher<ProjectProductDO>() { @Override public boolean matches(Object arg0) { ProjectProductDO productDO = (ProjectProductDO) arg0; if (!checkParam(productDO)) { return false; } if (!checkAmount(productDO)) { return false; } if (productDO.getProductCode().equals(oss)) { return true; } return false; } @Override public void describeTo(Description arg0) { } }));
异常测试
补充一个异常验证的mock的写法,参考代码如下
package jmockit.demo.test;import org.junit.Test;import org.junit.Rule;import org.junit.rules.ExpectedException;public class ExceptionTest { @Rule public final ExpectedException thrown = ExpectedException.none(); @Test public void test() { thrown.expect(NoSuchMethodException.class); // thrown.expect(NullPointerException.class); exceptionMethod(null); } private void exceptionMethod(Object obj) { obj.toString(); }}
阅读全文
0 0
- jmockit测试
- 用 JMockit 编程测试代码
- JMockit Mock测试入门详解
- Jmockit
- jmockit
- jmockit
- JMockit
- jmockit
- JMockit
- 使用JUnit4与JMockit进行打桩测试
- [转]使用JUnit4与JMockit进行打桩测试
- 单元测试-JMockit中使用参数化(多参数)测试
- Jmockit实用技巧
- Jmockit入门
- jmockit junit
- Jmockit使用指南
- jmockit配置
- Jmockit使用指南
- 设置的mysql密码无效的问题
- Centos7+nginx+tomcat7反向代理,负载,集群
- 标签二值化LabelBinarizer
- 关于activity,context那些坑
- Android RecyclerView 使用完全解析 体验艺术般的控件
- jmockit测试
- 4697: CFNetwork internal error (0xc01a:/XXX/CFNetwork-811.4.18/Loading/URLConnectionLoader.cpp:304)
- C++网络编程(一)
- 音视频同步(播放)原理
- 设计模式原则(5)--Law of Demeter(LoD)--迪米特法则
- UGUI 整页滑动
- hdu 2476 String painter
- spring cloud-实现Eureka注册中心的HA
- LintCode:M-房屋染色