zoukankan      html  css  js  c++  java
  • 11. verify验证方法调用

    package lesson11;
    
    import org.junit.After;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.Mock;
    import org.mockito.runners.MockitoJUnitRunner;
    import static org.hamcrest.CoreMatchers.equalTo;
    import static org.junit.Assert.assertThat;
    import static org.mockito.Mockito.*;
    
    @RunWith(MockitoJUnitRunner.class)
    public class VerifyTest {
    
        @Mock
        private SimpleDao simpleDao;
    
        @Test
        public void testRealCallAdd() {
            SimpleService simpleService = new SimpleService(simpleDao);
            Simple simple = new Simple();
            when(simpleDao.exist(simple)).thenReturn(false);
            when(simpleDao.add(simple)).thenReturn(true);
            when(simpleDao.update(simple)).thenReturn(true);
    
            boolean result = simpleService.merge(simple);
            assertThat(true, equalTo(result));
            /**
             * 利用verify确定究竟调用的是哪个方法
             */
            verify(simpleDao, times(1)).add(simple);
            verify(simpleDao, times(0)).update(simple);
        }
    
        @Test
        public void testRealCallUpdate() {
            SimpleService simpleService = new SimpleService(simpleDao);
            Simple simple = new Simple();
            when(simpleDao.exist(simple)).thenReturn(true);
            when(simpleDao.add(simple)).thenReturn(true);
            when(simpleDao.update(simple)).thenReturn(true);
    
            boolean result = simpleService.merge(simple);
            assertThat(true, equalTo(result));
            verify(simpleDao, times(0)).add(simple);
            verify(simpleDao, times(1)).update(simple);
        }
    
        @Test
        public void testMerge() {
            SimpleService simpleService = new SimpleService(simpleDao);
            Simple simple = new Simple();
            when(simpleDao.exist(simple)).thenReturn(true, false);
            when(simpleDao.add(simple)).thenReturn(true);
            when(simpleDao.update(simple)).thenReturn(true);
    
            boolean result = simpleService.merge(simple);
            assertThat(true, equalTo(result));
            verify(simpleDao, times(0)).add(simple);
            verify(simpleDao, times(1)).update(simple);
    
            result = simpleService.merge(simple);
            assertThat(true, equalTo(result));
            verify(simpleDao, times(1)).add(simple);
            verify(simpleDao, times(1)).update(simple);
        }
    
        @After
        public void destroy() {
            reset(simpleDao);
        }
    }
    package lesson11;
    
    public class SimpleService {
        public SimpleDao simpleDao;
    
        public SimpleService(SimpleDao simpleDao) {
            this.simpleDao = simpleDao;
        }
    
        public boolean merge(Simple simple) {
            boolean exist = simpleDao.exist(simple);
            if (exist) {
                return simpleDao.update(simple);
            } else {
                return simpleDao.add(simple);
            }
        }
    }
    SimpleService
    package lesson11;
    
    public class SimpleDao {
        public boolean exist(Simple simple) {
            throw new RuntimeException();
        }
    
        public boolean update(Simple simple) {
            throw new RuntimeException();
        }
    
        public boolean add(Simple simple) {
            throw new RuntimeException();
        }
    }
    SimpleDao
    package lesson11;
    
    public class Simple {
    }
    Simple
  • 相关阅读:
    dapper 批量删除、新增、修改说明
    android 加载assets目录下的静态html文件案例
    webstorm中使用git提交代码时出现unversioned files错误
    windows server 2008 R2 x64 部署.net core 3.1项目
    asp.net core 项目添加nlog日志(loggerFactor.AddNLog 过时处理(.net core 3.1))
    机器学习笔记之一步步教你轻松学主成分分析PCA降维算法
    机器学习笔记之类别特征处理
    机器学习笔记之range, numpy.arange 和 numpy.linspace的区别
    机器学习笔记之Numpy的random函数
    机器学习笔记之矩阵分解 SVD奇异值分解
  • 原文地址:https://www.cnblogs.com/yfzhou528/p/14025306.html
Copyright © 2011-2022 走看看