`
superheizai
  • 浏览: 65487 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Mockito学习(二)

 
阅读更多

这里总结几个我做个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 - Packt

    ### Mockito Cookbook - 关键知识点概览 #### 一、Mockito框架简介 ...综上所述,《Mockito Cookbook》这本书涵盖了从基础到高级的所有Mockito使用技巧,非常适合希望深入学习Mockito并提高测试技能的开发者。

    Practical Unit Testing with TestNG and Mockito

    接下来,我们将通过一系列具体的例子来学习如何使用TestNG和Mockito进行实战单元测试。 ##### 第一步:项目结构和命名约定 在开始编写测试之前,需要先确定项目的结构和遵循一定的命名约定。通常情况下,测试类会...

    Mastering Unit Testing Using Mockito and JUnit

    《使用Mockito与JUnit精通单元测试》是一本非常适合希望深入学习单元测试的开发者的书籍。通过本书的学习,开发者将能够掌握如何使用JUnit和Mockito这两个强大的工具来进行有效的单元测试,从而提高软件项目的整体...

    Packt Publishing Mastering Unit Testing Using Mockito and JUnit (2014)

    ### 相关知识点 #### 一、JUnit 4 基础与高级...通过以上知识点的学习,读者可以全面掌握如何使用 JUnit 4 和 Mockito 来构建高效、可靠的单元测试。这不仅有助于提高软件质量,还能加速开发周期,减少后期维护成本。

    Packt Publishing Mockito Essentials (2014)

    ### Mockito Essentials知识点详解 #### 一、探索测试双重(Test Doubles) ...以上内容涵盖了《Mockito Essentials》书中涉及的关键知识点和技术细节,为读者提供了深入学习Mockito框架的基础和指南。

    mockito单元测试

    #### 二、Mockito 概述 ##### 2.1 Mockito 简介 Mockito是一个广泛使用的Java Mock框架,它允许开发者轻松地创建Mock对象,以便在单元测试中模拟依赖组件的行为。与传统的Mock工具(如EasyMock)相比,Mockito更加...

    MockitoDemo:使用 Mockito 在 Java 中进行 Mocking 入门

    ### 二、Mockito 的基本概念 1. **Mock 对象**:这是 Mockito 创建的一种特殊对象,用于模拟真实对象的行为。在测试中,mock 对象可以替代实际的依赖,避免了因依赖复杂性导致的测试困难。 2. **Stubbing**:这是 ...

    SSM框架的学习与应用JavaEE(第二天)Mybatis的深入学习

    通过对MyBatis的深入学习,包括MyBatis核心对象、配置文件、映射文件的使用。 文章具体介绍了: MyBatis核心对象SqlSessionFactoryBuilder的作用 ...JUnit与Mockito结合测试示例 工具类MyBatisUtil代码示例

    ssm学习记录二

    在"ssm学习记录二"中,我们可能涉及到这三个核心组件的集成与应用,以及在实际项目开发中的配置和优化过程。 1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等...

    基于SpringBoot 和 Vue3 开发的博客系统源码,适合新手学习,二次开发,课程设计和毕业设计等.zip

    这是一个基于SpringBoot和Vue3技术栈开发的博客系统源码,非常适合初学者进行学习、二次开发,以及作为毕业设计或课程设计的项目实践。通过这个项目,你可以深入了解这两种技术的实际应用,以及如何将它们整合到一个...

    spring陈华雄学习光盘代码二部分.rar

    《Spring框架深度解析——基于陈华雄学习光盘代码二部分》 在深入探讨Spring框架的知识之前,我们先了解一下这个压缩包的结构。"spring陈华雄学习光盘代码二部分.rar"是一个包含多个章节代码的学习资源,由于上传...

    Spring 学习笔记二

    在本篇"Spring 学习笔记二"中,我们将深入探讨Spring框架的核心概念和技术细节,以便更好地理解和使用这个广泛应用于企业级Java开发的框架。Spring以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...

    java架构师学习大纲及视频

    2. 测试框架:学习JUnit、Mockito等单元测试工具,理解测试驱动开发。 七、项目实战 通过实际项目,将理论知识转化为实际操作能力,提升问题解决和团队协作能力。 "001_如何学习JAVA300集(一定要看…………).mp4...

    SSM学习源码,自我学习路径

    - **缓存机制**:了解MyBatis的本地缓存和二级缓存,以及如何自定义缓存策略。 4. **整合SSM**: - **配置整合**:理解如何在Spring的配置文件中配置SpringMVC和MyBatis,以及如何进行数据库连接、事务等配置。 ...

    Java学习路线.pdf

    4. **测试**:了解JUnit和Mockito等单元测试框架,以及集成测试和持续集成。 通过以上六个阶段的学习,你将具备成为一名专业Java开发者的必要技能。在实践中不断深化理解和应用,你将能够在各种项目中游刃有余。...

    Mockit资料,自用

    以上只是Mockito的基本介绍,实际使用中还涉及到更多高级特性和技巧,通过学习提供的Mockit资料,你可以更深入地掌握Mockito,提高测试的质量和效率。记住,良好的测试是软件质量的保障,Mockito就是实现这一目标的...

    中控智慧考勤机Java二次开发Demo

    通过这个Demo,开发者不仅可以学习到如何与中控考勤机进行通讯,还能掌握Java在企业级应用中的实战技巧。虽然资源帖中提到的Demo可能需要进一步优化,但它无疑是Java开发者在面对中控考勤机时的一个宝贵起点。

    IT后端Java工程师的学习路线图

    1. **单元测试与Mocking**:使用JUnit、Mockito进行单元测试,确保代码质量。 2. **性能监控**:了解JProfiler、VisualVM等工具,进行性能分析和调优。 3. **DevOps文化**:理解敏捷开发、持续集成和持续交付的...

    Java学习路线和规划

    了解Mockito框架的基本用法,学习如何模拟对象的行为。 #### 第七阶段:实战项目 21. **实战项目开发** - **项目规划**:根据需求分析和设计文档来规划项目的整体架构和技术选型。 - **编码实现**:按照设计文档...

Global site tag (gtag.js) - Google Analytics