Mockito入门

Mockito是一款用于Java的mocking框架,简化了测试过程中的对象模拟步骤。本文介绍了如何使用Mockito模拟对象及其方法调用,并演示了如何验证方法调用次数等实用技巧。

简介

 

InfoQ-使用Mockito 1.5监视普通对象 写道
Mockito是一个针对Java的mocking框架。它与EasyMock和jMock很相似,但是通过在执行后校验什么已经被调用,它消除了对期望行为(expectations)的需要。其它的mocking库需要你在执行前记录期望行为(expectations),而这导致了丑陋的初始化代码。

 

 更多信息请参考如下位置,

 原文链接:http://www.infoq.com/cn/news/2008/09/mockito-1.5

 官方网站:http://code.google.com/p/mockito/

 

入门

以下内容均参考至http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/Mockito.html


在任何应用Mockito的地方,加上如下片段:
Java代码 复制代码
  1. import static org.mockito.Mockito.*;  
 

模拟对象

 

Java代码 复制代码
  1. // 模拟LinkedList 的对象   
  2. LinkedList mockedList = mock(LinkedList.class);   
  3.   
  4. // 此时调用get方法,是会返回null,因为还没有对方法调用的返回值做模拟    
  5. System.out.println(mockedList.get(999));  

 

 

 模拟方法调用的返回值

 

Java代码 复制代码
  1. // 模拟获取第一个元素时,返回字符串first   
  2. when(mockedList.get(0)).thenReturn("first");   
  3.   
  4. // 此时打印输出first   
  5. System.out.println(mockedList.get(0));  
 

模拟方法调用抛出异常

Java代码 复制代码
  1. // 模拟获取第二个元素时,抛出RuntimeException   
  2. when(mockedList.get(1)).thenThrow(new RuntimeException());   
  3.   
  4. // 此时将会抛出RuntimeException   
  5. System.out.println(mockedList.get(1));  
 没有返回值类型的方法也可以模拟异常抛出:

Java代码 复制代码
  1. doThrow(new RuntimeException()).when(mockedList).clear();  
 

模拟方法调用的参数匹配

Java代码 复制代码
  1. // anyInt()匹配任何int参数,这意味着参数为任意值,其返回值均是element   
  2. when(mockedList.get(anyInt())).thenReturn("element");   
  3.   
  4. // 此时打印是element   
  5. System.out.println(mockedList.get(999));  

验证方法调用次数

Java代码 复制代码
  1. // 调用add一次   
  2. mockedList.add("once");   
  3.   
  4. // 下面两个写法验证效果一样,均验证add方法是否被调用了一次   
  5. verify(mockedList).add("once");   
  6. verify(mockedList, times(1)).add("once");  
 
 还可以通过atLeast(int i)和atMost(int i)来替代time(int i)来验证被调用的次数最小值和最大值。

 

收尾

上面仅列举了一些常用的,更多用法和技巧还请详细参考 http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/Mockito.html。让Mockito使测试驱动开发更有趣吧!
【故障诊断】【pytorch】基于CNN-LSTM故障分类的轴承故障诊断研究[西储大学数据](Python代码实现)内容概要:本文介绍了基于CNN-LSTM神经网络模型的轴承故障分类方法,利用PyTorch框架实现,采用西储大学(Case Western Reserve University)公开的轴承故障数据集进行实验验证。该方法结合卷积神经网络(CNN)强大的特征提取能力和长短期记忆网络(LSTM)对时序数据的建模优势,实现对轴承不同故障类型和严重程度的高精度分类。文中详细阐述了数据预处理、模型构建、训练流程及结果分析过程,并提供了完整的Python代码实现,属于典型的工业设备故障诊断领域深度学习应用研究。; 适合人群:具备Python编程基础和深度学习基础知识的高校学生、科研人员及工业界从事设备状态监测与故障诊断的工程师,尤其适合正在开展相关课题研究或希望复现EI级别论文成果的研究者。; 使用场景及目标:① 学习如何使用PyTorch搭建CNN-LSTM混合模型进行时间序列分类;② 掌握轴承振动信号的预处理与特征学习方法;③ 复现并改进基于公开数据集的故障诊断模型,用于学术论文撰写或实际工业场景验证; 阅读建议:建议读者结合提供的代码逐行理解模型实现细节,重点关注数据加载、滑动窗口处理、网络结构设计及训练策略部分,鼓励在原有基础上尝试不同的网络结构或优化算法以提升分类性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值