当前位置: 首页 > 编程笔记 >

Java mockito单元测试实现过程解析

盖嘉庆
2023-03-14
本文向大家介绍Java mockito单元测试实现过程解析,包括了Java mockito单元测试实现过程解析的使用技巧和注意事项,需要的朋友参考一下

待测试的服务接口:

public interface ItemService {
  String getItemNameUpperCase(String itemId);
}

预览

待测试的服务的实现类:

@Service
public class ItemServiceImpl implements ItemService {

  @Resource
  private ItemRepository itemRepository;

  @Override
  public String getItemNameUpperCase(String itemId) {

    Item item = itemRepository.findById(itemId);

    if (item == null) {
      return null;
    }
    return item.getName().toUpperCase();
  }
}

// 测试用例
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;

public class ItemServiceTest {

  @Mock
  private ItemRepository itemRepository;

  @InjectMocks
  private ItemServiceImpl itemService;

  @Before
  public void setUp(){
    MockitoAnnotations.initMocks(this);
  }

  /**
   * 如果从存储层查询到一个Item, 那么它的 name 将被转化为大写.
   */
  @Test
  public void shouldReturnItemNameInUpperCase() {

    // Given
    Item mockedItem = new Item("it1", "Item 1", "This is item 1", 2000, true);
    when(itemRepository.findById("it1")).thenReturn(mockedItem);

    // When
    String result = itemService.getItemNameUpperCase("it1");

    // Then
    verify(itemRepository, times(1)).findById("it1");
    assertThat(result).isEqualTo("ITEM 1");
  }
}

Mockito 的更多高级用法请参考官方网站和框架配套 wiki。如果需要 mock 静态方法、私有函数等,可以学习 PowerMock, 拉取其源码通过学习单元测试来快速掌握其用法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍spring项目实现单元测试过程解析,包括了spring项目实现单元测试过程解析的使用技巧和注意事项,需要的朋友参考一下 后台开发过程中,写单元测试是非常重要的,对于我们开发人员调试、排查问题是很方便的, 但是我们在启动项目的时候,需要将所以类交给spring托管,在单元测试中需要怎么实现类的注入呢? 直接上图 继续上代码 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家

  • 本文向大家介绍Spring Boot通过Junit实现单元测试过程解析,包括了Spring Boot通过Junit实现单元测试过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring Boot通过Junit实现单元测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.需要在pom.xml中引入spring-boo

  • 本文向大家介绍Spring Boot Rest控制器单元测试过程解析,包括了Spring Boot Rest控制器单元测试过程解析的使用技巧和注意事项,需要的朋友参考一下 Spring Boot提供了一种为Rest Controller文件编写单元测试的简便方法。在SpringJUnit4ClassRunner和MockMvc的帮助下,可以创建一个Web应用程序上下文来为Rest Controll

  • 本文向大家介绍Python单元测试实例详解,包括了Python单元测试实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python单元测试。分享给大家供大家参考,具体如下: 在Python中进行单元测试需要用到自动单元测试框架PyUnit,Python2.1及其以后的版本都将PyUnit作为一个标准模块(即python的unittest模块),如果你很out,那么你需要从PyUni

  • 我找不到Java的自包含UUID5实现,所以我试着在下面滚动这个解决方案。它通过了我的一些单元测试,但是没有通过其他的。这里面有什么明显的漏洞吗?

  • 本文向大家介绍Django REST framework 单元测试实例解析,包括了Django REST framework 单元测试实例解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Django REST framework 单元测试实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 环境 Win10 Python3.7