zoukankan      html  css  js  c++  java
  • mockito单元测试 Java

    待测试的服务接口:

    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, 拉取其源码通过学习单元测试来快速掌握其用法。

    参考于慕课
    解锁大厂思维:剖析《阿里巴巴 Java 开发手册》/22 单元测试之单测举例

  • 相关阅读:
    PHP实现带有验证码的登陆注册
    XML
    自定义注解--Annotation
    URL编程
    SpringMvc表单标签库
    Socket编程
    网络编程
    其他流
    Spring MVC-视图解析器
    IDEA(JAVA)使用json
  • 原文地址:https://www.cnblogs.com/bigorang/p/13517603.html
Copyright © 2011-2022 走看看