Mockito是现在java领域中,用java语言编写的测试代码保持最简洁的一个mock框架(不与groovy等比较)。相比easymock,jmock,编写出来的代码更加容易阅读。无需录制mock方法调用就返回默认值是很大一个优势。
以下为实际的精简测试用例使用,相比较其它mock框架,更加容易阅读。更加符合DSL。
/**
* Mockito测试使用实例
*
* @author badqiu
* @email badqiu(a)gmail.com
*
*/
public class MockitoListTest extends Assert{
List<String> mockList = mock(List.class);
@Test //标准测试
public void test_3A() {
//arrange
when(mockList.get(0)).thenReturn("one");
when(mockList.get(1)).thenReturn("two");
//action
String result1 = mockList.get(0);
//assert
assertEquals(result1,"one");
verify(mockList).get(0);
}
@Test //返回默认值,无需录制动作
public void test_default_value_return_by_mockito() {
//action
String result1 = mockList.get(0);
//assert
assertEquals(result1,null);
verify(mockList).get(0);
}
@Test //参数的精确匹配及模糊匹配any()
public void test_arguments_matche() {
// 参数匹配,使用的eq()等参数匹配,则必须全部使用匹配符,不使用则不用
// eq() any() anyInt() anyObject() anyMap() anyCollection()
when(mockList.get(anyInt())).thenReturn("return me by anyInt()");
for(int i = 0; i < 100; i++) {
assertEquals("return me by anyInt()",mockList.get(i));
}
}
@Test //调用次数不同,返回值也不同
public void test_return_different_values_by_call_times() {
when(mockList.get(0)).thenReturn("1").thenReturn("2");
assertEquals(mockList.get(0),"1");
assertEquals(mockList.get(0),"2");
}
@Test //验证方法调用次数
public void verify_how_many_times_a_method_is_called() {
mockList.get(0);
mockList.get(2);
mockList.get(2);
mockList.get(2);
//方法调用次数验证
verify(mockList,atLeastOnce()).get(0);
verify(mockList,never()).get(1);
verify(mockList,times(3)).get(2);
}
// 没有返回值的方法 exception 抛出
@Test(expected=IllegalStateException.class)
public void test_throw_exception_with_not_return_value_method() {
doThrow(new IllegalStateException("please not invocke clear() ")).when(mockList).clear();
mockList.clear();
}
// 有返回值的方法 exception 抛出
@Test(expected=IllegalStateException.class)
public void test_throw_exception_with_has_return_value_method() {
when(mockList.remove(1)).thenThrow(new IllegalStateException("I has return value"));
mockList.remove(1);
}
}
分享到:
相关推荐
TestNG和Mockito是两个在单元测试领域常用的工具,它们分别用于测试管理和模拟对象。本篇文章将深入探讨如何在Spring项目中集成TestNG和Mockito进行单元测试。 TestNG是一个强大的测试框架,它扩展了JUnit的功能,...
在这个压缩包中,包含的是两个关键工具:JUnit 4.12 和 Mockito,它们是Java开发中广泛使用的单元测试框架。 **JUnit** 是一个开源的Java单元测试框架,它的版本4.12提供了许多增强的功能,包括注解(Annotation)...
PowerMock和Mockito是两个非常流行的Java单元测试框架,结合JUnit,它们可以提供强大的测试能力。在本文中,我们将深入探讨"PowerMock+Mockito-junit测试套件1.6.3版本"中的关键概念、功能和使用方法。 **PowerMock...
在测试类 `ItemServiceTest` 中,我们使用 `@Mock` 注解创建了一个 `ItemRepository` 的 mock 对象,并使用 `@InjectMocks` 注解创建了 `ItemServiceImpl` 的实例。`@Before` 方法用于初始化 mock 对象。这样,当...
2. **网络请求模拟**:如果登录过程涉及网络通信(如向服务器发送请求验证凭据),我们可以使用Mockito或者OkHttp的MockWebServer来模拟网络响应,确保即使在没有网络连接的情况下也能进行测试。 3. **异步操作**:...
### Mockito 单元测试详解 #### 一、引言 在软件开发过程中,编写单元测试是一种常见的实践方式,用于确保代码质量与功能正确性。然而,在处理复杂的依赖关系时,传统的方法可能会遇到难题,比如当一个类依赖于多...
- 初始化MockMvc:通常在测试类中,通过`MockMvcBuilders.standaloneSetup()`或`MockMvcBuilders.webAppContextSetup()`创建`MockMvc`实例。 - 执行请求:使用`mockMvc.perform()`发送HTTP请求,如`mockMvc....
本篇文章将深入探讨如何结合TestNG、Mockito以及Spring的自动装配注解进行有效的集成测试。以下是对这些技术的详细说明: TestNG是一个功能强大的测试框架,它是JUnit的替代品,提供了更丰富的功能,如并行测试执行...
SOAP Web服务模拟实用程序,使用Web服务器实例在本地端口上创建真实的服务端点。 这些端点将请求直接委托给模拟。 用户将从中受益 全栈客户端测试 拦截器 处理程序 简单的JUnit规则设置 SOAP故障帮手 所有这些都...
本文将从多个角度详细介绍如何使用Springboot、Junit和Mockito进行单元测试,并以实例代码演示。以下是本文的知识点总结: 一、单元测试的重要性 单元测试是软件测试的一种,以验证软件的每个单元是否能够在各种...
- **命名测试实例**:使用 `@Parameters` 注解中的 `name` 属性为每个测试实例指定描述性的名称。 - **设置超时**:通过 `@Timeout` 注解指定测试方法的最大执行时间,超过此时间测试将失败。 #### 三、JUnit 规则 ...
- `@InjectMocks` 注解用于创建待测试类的实例,Mockito 会自动注入模拟对象。 - `@Mock` 注解创建模拟对象,可以配置期望行为。 - `@Spy` 注解创建一个部分模拟对象,通常用于部分模拟真实对象。 3. **Mockito ...
- **主要功能**:本书提供了大量的实例来展示Mockito功能的实际应用,不仅限于文档介绍,还包括如何高效地使用Mockito进行单元测试的方法。 - **应用场景**:适用于JUnit、PowerMock、TestNG等流行单元测试框架。 #...
在Spring Boot项目中使用Mockito是非常有用的,它可以帮助我们更好地进行单元测试和集成测试。在本文中,我们将通过示例代码来介绍如何在Spring Boot项目中使用Mockito, 以及它的优点和注意事项。 什么是Mockito?...
《单元测试实战:TestNG与Mockito应用解析》 单元测试是软件开发过程中的重要环节,它能够确保代码的正确性、稳定性和可维护性。TestNG和Mockito是两个非常流行的Java单元测试工具,它们提供了强大的功能和灵活的...
Mock对象是模拟的类实例,它们可以替代真实的依赖,避免在测试中实际调用外部系统或服务。Stub则是预先定义的返回值或行为,用于控制mock对象的响应。当我们使用Mockito创建mock对象时,可以指定它对特定方法调用的...
本篇文章将深入探讨JUnit4的单元测试实例,帮助你更好地理解和应用这个工具。 一、JUnit4简介 JUnit4相较于之前的版本,引入了注解(Annotation)机制,极大地简化了测试用例的编写。例如,`@Test`注解用于标记测试...
Mockito作为一种流行的单元测试框架,被广泛应用于Java项目的单元测试中。它通过模拟对象来帮助开发者隔离测试中的依赖项,从而使得测试更加聚焦于被测对象本身的行为。因此,掌握Mockito的基本用法及高级特性对于...
Mockito 是一个流行的 Java 单元测试框架,它允许开发者创建模拟对象来隔离被测试代码,以便更好地控制测试环境。这个“mockito-sample”项目提供了一个快速示例,展示了如何在 JUnit 测试用例中使用 Mockito。让...