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
  • 相关阅读:
    spring+mybatis多数据源切换
    【linux环境下】RabbitMq的安装和监控插件安装
    Slurm远程登录Jupyter Notebook
    Google Colab 使用
    关于conda和jupyter使用
    关于给C盘扩容以及动态磁盘
    关于使用实验室服务器的GPU以及跑上TensorFlow代码
    一些更改的后端接口和代码
    MarkDown to PDF
    蜗牛慢慢爬 LeetCode 25. Reverse Nodes in k-Group [Difficulty: Hard]
  • 原文地址:https://www.cnblogs.com/yfzhou528/p/14025306.html
Copyright © 2011-2022 走看看