这里总结几个我做个test的用法。
1. argument matcher, such as anyInt(); when .. thenreturn..; verify never(), atleast(), atmost()
List mock = mock(List.class);
/*
* stub the mock. with return value, will be" when ...", then
* " thenReturn...". without return value, will be " do
*/
//
when(mock.get(anyInt())).thenReturn("123");
// simulate void function,
doThrow(new RuntimeException("test the error")).when(mock).clear();
mock.get(123);
verify(mock).get(anyInt());
mock.add("1");
mock.add("2");
mock.add("2");
verify(mock).add("1");
verify(mock, times(2)).add("2");
// will fail, because three times will be invoked
// verify(mock).add(anyString());
verify(mock, never()).add("3");
verify(mock, atLeastOnce()).add("1");
verify(mock, atMost(5)).add("2");
mock.clear();
2.Inorder,验证顺序和执行次数
List target = mock(List.class);
target.add("1");
target.add("2");
InOrder inOrder = inOrder(target);
inOrder.verify(target).add("1");
inOrder.verify(target).add("2");
List seq1 = mock(List.class);
List seq2 = mock(List.class);
List seq3 = mock(List.class);
seq1.add("123");
seq2.add("123");
InOrder inOrder2 = inOrder(seq1, seq2);
// inOrder2.verify(seq1).add("123");
// inOrder2.verify(seq2).add("123");
inOrder2.verify(seq1).add("123");
inOrder2.verify(seq2).add("123");
verify(seq1).add("123");
verifyZeroInteractions(seq3);
verifyNoMoreInteractions(seq1);
3.Answer
TestInterface testTarget = mock(TestInterface.class,
new Answer<TestInterface>() {
@Override
public TestInterface answer(InvocationOnMock invocation)
throws Throwable {
Object[] arguments = invocation.getArguments();
// based on arguments, you can return different value
System.out.println(arguments.length);
return null;
}
});
testTarget.print4();
testTarget.print4("2");
testTarget.print4("3", "4");
testTarget.print4("4");
这里利用Answer可以根据传入的参数,返回不同的值,从而以可以利用一个mock对象对一个方法mock多个不同的返回值。
4.spy
TestInterface inte = new ConcreteTestInterface2();
TestInterface spy = spy(inte);
when(spy.print2()).thenReturn(333);
// if you want to call orignal implementation, you can call
// doCallRealMethod
doCallRealMethod().when(spy).print2();
System.out.println(spy.print1("123"));
System.out.println(spy.print2());
System.out.println(spy.print3());
分享到:
相关推荐
### Mockito Cookbook - 关键知识点概览 #### 一、Mockito框架简介 ...综上所述,《Mockito Cookbook》这本书涵盖了从基础到高级的所有Mockito使用技巧,非常适合希望深入学习Mockito并提高测试技能的开发者。
接下来,我们将通过一系列具体的例子来学习如何使用TestNG和Mockito进行实战单元测试。 ##### 第一步:项目结构和命名约定 在开始编写测试之前,需要先确定项目的结构和遵循一定的命名约定。通常情况下,测试类会...
《使用Mockito与JUnit精通单元测试》是一本非常适合希望深入学习单元测试的开发者的书籍。通过本书的学习,开发者将能够掌握如何使用JUnit和Mockito这两个强大的工具来进行有效的单元测试,从而提高软件项目的整体...
### 相关知识点 #### 一、JUnit 4 基础与高级...通过以上知识点的学习,读者可以全面掌握如何使用 JUnit 4 和 Mockito 来构建高效、可靠的单元测试。这不仅有助于提高软件质量,还能加速开发周期,减少后期维护成本。
### Mockito Essentials知识点详解 #### 一、探索测试双重(Test Doubles) ...以上内容涵盖了《Mockito Essentials》书中涉及的关键知识点和技术细节,为读者提供了深入学习Mockito框架的基础和指南。
#### 二、Mockito 概述 ##### 2.1 Mockito 简介 Mockito是一个广泛使用的Java Mock框架,它允许开发者轻松地创建Mock对象,以便在单元测试中模拟依赖组件的行为。与传统的Mock工具(如EasyMock)相比,Mockito更加...
### 二、Mockito 的基本概念 1. **Mock 对象**:这是 Mockito 创建的一种特殊对象,用于模拟真实对象的行为。在测试中,mock 对象可以替代实际的依赖,避免了因依赖复杂性导致的测试困难。 2. **Stubbing**:这是 ...
通过对MyBatis的深入学习,包括MyBatis核心对象、配置文件、映射文件的使用。 文章具体介绍了: MyBatis核心对象SqlSessionFactoryBuilder的作用 ...JUnit与Mockito结合测试示例 工具类MyBatisUtil代码示例
在"ssm学习记录二"中,我们可能涉及到这三个核心组件的集成与应用,以及在实际项目开发中的配置和优化过程。 1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等...
这是一个基于SpringBoot和Vue3技术栈开发的博客系统源码,非常适合初学者进行学习、二次开发,以及作为毕业设计或课程设计的项目实践。通过这个项目,你可以深入了解这两种技术的实际应用,以及如何将它们整合到一个...
《Spring框架深度解析——基于陈华雄学习光盘代码二部分》 在深入探讨Spring框架的知识之前,我们先了解一下这个压缩包的结构。"spring陈华雄学习光盘代码二部分.rar"是一个包含多个章节代码的学习资源,由于上传...
在本篇"Spring 学习笔记二"中,我们将深入探讨Spring框架的核心概念和技术细节,以便更好地理解和使用这个广泛应用于企业级Java开发的框架。Spring以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...
2. 测试框架:学习JUnit、Mockito等单元测试工具,理解测试驱动开发。 七、项目实战 通过实际项目,将理论知识转化为实际操作能力,提升问题解决和团队协作能力。 "001_如何学习JAVA300集(一定要看…………).mp4...
- **缓存机制**:了解MyBatis的本地缓存和二级缓存,以及如何自定义缓存策略。 4. **整合SSM**: - **配置整合**:理解如何在Spring的配置文件中配置SpringMVC和MyBatis,以及如何进行数据库连接、事务等配置。 ...
4. **测试**:了解JUnit和Mockito等单元测试框架,以及集成测试和持续集成。 通过以上六个阶段的学习,你将具备成为一名专业Java开发者的必要技能。在实践中不断深化理解和应用,你将能够在各种项目中游刃有余。...
以上只是Mockito的基本介绍,实际使用中还涉及到更多高级特性和技巧,通过学习提供的Mockit资料,你可以更深入地掌握Mockito,提高测试的质量和效率。记住,良好的测试是软件质量的保障,Mockito就是实现这一目标的...
通过这个Demo,开发者不仅可以学习到如何与中控考勤机进行通讯,还能掌握Java在企业级应用中的实战技巧。虽然资源帖中提到的Demo可能需要进一步优化,但它无疑是Java开发者在面对中控考勤机时的一个宝贵起点。
1. **单元测试与Mocking**:使用JUnit、Mockito进行单元测试,确保代码质量。 2. **性能监控**:了解JProfiler、VisualVM等工具,进行性能分析和调优。 3. **DevOps文化**:理解敏捷开发、持续集成和持续交付的...
了解Mockito框架的基本用法,学习如何模拟对象的行为。 #### 第七阶段:实战项目 21. **实战项目开发** - **项目规划**:根据需求分析和设计文档来规划项目的整体架构和技术选型。 - **编码实现**:按照设计文档...