`
hotdog
  • 浏览: 284908 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

学习Mockito - Mock对象的创建和Stubbing

    博客分类:
  • test
 
阅读更多
Mock对象的创建
mock(Class<T> classToMock)
mock(Class<T> classToMock, String name)
可以对类和接口进行mock对象的创建,创建的时候可以为mock对象命名,也可以忽略命名参数。为mock对象命名的好处就是调试的时候会很方便,比如,我们mock多个对象,在测试失败的信息中会把有问题的mock对象打印出来,有了名字我们可以很容易定位和辨认出是哪个mock对象出现的问题。另外它也有限制,对于final类、匿名类和Java的基本类型是无法进行mock的。

Mock对象的期望行为及返回值设定
我们已经了解到可以通过when(mock.someMethod()).thenReturn(value) 来设定mock对象的某个方法调用时的返回值,但它也同样有限制对于static和final修饰的方法是无法进行设定的。下面来详细的介绍一下有关方法及返回值的设定:

首先假设我们创建Iterator接口的mock对象
Iterator<String> i = mock(Iterator.class);

对方法设定返回值
when(i.next()).thenReturn("Hello")

对方法设定返回异常
when(i.next()).thenThrow(new RuntimeException())

Mockito支持迭代风格的返回值设定
第一种方式
when(i.next()).thenReturn("Hello").thenReturn("World")
第二种方式
when(i.next()).thenReturn("Hello", "World")
上面的设定相当于:
when(i.next()).thenReturn("Hello")
when(i.next()).thenReturn("World")
第一次调用i.next()将返回”Hello”,第二次的调用会返回”World”。

Stubbing的另一种语法
doReturn(Object) 设置返回值
doReturn("Hello").when(i).next();

迭代风格
doReturn("Hello").doReturn("World").when(i).next();
返回值的次序为从左至右,第一次调用返回”Hello”,第二次返回”World”。

doThrow(Throwable) 设置返回异常
doThrow(new RuntimeException()).when(i).next();
因为这种语法的可读性不如前者,所以能使用前者的情况下尽量使用前者,当然在后面要介绍的Spy除外。

对void方法进行方法预期设定
void方法的模拟不支持when(mock.someMethod()).thenReturn(value)这样的语法,只支持下面的方式:
doNothing() 模拟不做任何返回(mock对象void方法的默认返回)
doNothing().when(i).remove();
doThrow(Throwable) 模拟返回异常
doThrow(new RuntimeException()).when(i).remove();

迭代风格
doNothing().doThrow(new RuntimeException()).when(i).remove();
第一次调用remove方法什么都不做,第二次调用抛出RuntimeException异常。

分享到:
评论

相关推荐

    mock开发所用到的2个核心JAR

    1. **Mock对象**:Mockito允许开发者创建mock对象,这些对象可以模仿真实对象的行为。在测试中,我们使用mock对象来代替真实的依赖,这样就可以控制它们的行为,避免了对复杂依赖的处理。 2. **Stubbing**:这是...

    PowerMock+Mockito-junit测试套件1.6.3版本

    Mockito是一个流行的Java单元测试框架,它提供了创建和配置mock对象的能力。Mockito的主要特点是它的简单性和易用性,允许开发者以一种声明式的方式定义期望行为。 1. **Mock对象创建**:Mockito可以轻松地创建mock...

    MockitoProject_tool_mockito-1.8.5.jar_storefh5_

    为了有效地利用“mockito-1.8.5.jar”,开发者需要将其添加到项目的类路径中,然后使用Mockito提供的API来创建mock对象,设置期望行为,并进行验证。同时,理解如何将Mockito与其他测试框架集成也是关键,这可能涉及...

    PyPI 官网下载 | mockito-1.0.9.tar.gz

    在Python中使用Mockito时,开发者通常会在测试代码中导入mockito库,然后使用`mock`、`patch`等函数来创建和配置模拟对象。例如,如果有一个函数`foo`依赖于外部服务`bar`,可以使用Mockito创建`bar`的模拟对象,...

    mockito-sample:在JUnit测试用例中如何使用Mockito创建模拟对象的快速示例

    通过学习这个示例,开发者可以了解如何在实际项目中使用 Mockito 和 JUnit 进行单元测试,包括如何创建模拟对象、预定义行为、验证方法调用等。这对于提高代码质量、确保功能正确性至关重要,特别是在大型复杂项目中...

    Mockito-and-Junit:Java Mock deafferents方法的示例存储库

    Mockito 和 JUnit 是 Java 开发中常用的两个测试框架,它们在软件开发过程中扮演着重要的角色。...通过学习和实践这些示例,你将能够熟练掌握模拟对象的创建和使用,以及如何结合 JUnit 创建全面的测试框架。

    mockito-doc-zh:Mockito框架中文文档

    Mockito库能够Mock对象、验证结果以及打桩(stubbing)。 该文档您也可以通过获取到。所有文档都保存在javadocs中,因为它能够保证文档与源代码的一致性。这样也能够让离线的用户从IDE直接访问到文档。这样一来也能够...

    Mockito的重要入门资料

    Mockito还支持一些注解来简化mock对象的创建和配置。例如: - `@Mock`:用于创建mock对象。 - `@Spy`:用于创建spy对象。 - `@Captor`:用于创建`ArgumentCaptor`。 通过上述介绍,我们不仅了解了Mockito的基本...

    EasyMock与Mockito 使用

    EasyMock是一个轻量级的模拟框架,它允许开发者创建和控制模拟对象。在EasyMock中,你可以预定义模拟对象的行为,比如设置预期调用的方法和返回值。这使得在单元测试中,可以专注于测试目标方法,而忽略那些不易于...

    Mocks, Mockito, and Spock

    通过本文的介绍,我们了解了Mocks的基本概念及其在单元测试中的重要作用,并深入探讨了如何使用Mockito来有效地进行模拟对象的创建、Stubbing以及验证行为等功能。Mockito的强大功能和简洁API使其成为Java开发者进行...

    Mockito入门

    2. **创建Mock对象**:使用`Mockito.mock(Class&lt;T&gt; classToMock)`方法创建mock对象。例如,如果你有一个名为`MyClass`的类,你可以创建它的mock对象如下:`MyClass myMock = Mockito.mock(MyClass.class)`。 3. **...

    mockito中文文档.zip

    Mockito 提供了简单易用的 API 来创建和配置 mock 对象。 2. **Stubbing**:在 Mockito 中,stubbing 是指为 mock 对象设定预期行为的过程。你可以定义当特定方法被调用时,mock 应该返回什么值或执行什么动作。...

    mock学习资料

    这些工具提供了方便的API来创建和配置Mock对象。 4. **Mock对象的创建**:通常,我们需要指定Mock对象应该模拟哪个类或接口,然后可以设置它在特定方法调用时返回什么值,或者记录哪些方法被调用。 5. **Stubbing*...

    mockito-example

    Mockito 是一个流行的 Java 单元测试框架,它允许开发者创建和配置模拟对象,以便在测试代码中替代真实的依赖项。这个"mockito-example"项目很可能是为了展示如何有效地使用 Mockito 进行单元测试。 在单元测试中,...

    使用mockito玩转junit test

    Mockito则是一个强大的模拟框架,它允许我们在测试中创建和配置模拟对象,以便隔离被测试代码并专注于测试单个行为。本教程将深入探讨如何使用Mockito与JUnit结合,来提升我们的测试能力。 首先,了解Mockito的基本...

    Mockito Cookbook

    Mockito是一款广泛应用于Java开发中的测试驱动开发(TDD)工具,它允许开发者创建和配置模拟对象,以便在测试中隔离代码并验证特定方法的行为。这本书详细介绍了如何有效地利用Mockito来编写整洁、可维护的测试代码...

    Mockito Essentials(PACKT,2014)

    Whether you are new to JUnit testing and mocking or a seasoned Mockito expert, this book will provide you with the skills you need to successfully build and maintain meaningful JUnit test cases and ...

    junit-mock:分支在 unti 测试中呈现不同类型的模拟

    在Java世界里,JUnit是进行单元测试的首选框架,而Mockito是它的一个流行扩展,用于创建和管理模拟对象。本文将深入探讨如何在JUnit测试中使用Mockito进行不同类型的模拟。 首先,我们要理解模拟的基本概念。模拟...

    mock-3.0.5.tar.gz

    1. **Mock对象生成器**:用于创建模拟对象,如Mockito的`@Mock`注解,它可以创建一个新的mock对象,模拟指定类的行为。 2. **验证器**:用于检查模拟对象在测试期间的行为,确保它们按照预期工作。例如,Mockito的`...

Global site tag (gtag.js) - Google Analytics