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
  • 相关阅读:
    笔记:Oracle SQL 高级编程 第2章 SQL 执行
    python 中的 filter, lambda, map, reduce 内置函数
    笔记:Oracle SQL 高级编程 第1章 SQL 核心
    java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射
    使用JDBC进行批处理
    程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
    教你如何迅速秒杀掉:99%的海量数据处理面试题
    十道海量数据处理面试题与十个方法大总结
    《Java 7 并发编程指南》学习概要 (7) 定制并发类
    HashMap多线程并发问题分析
  • 原文地址:https://www.cnblogs.com/yfzhou528/p/14025306.html
Copyright © 2011-2022 走看看