zoukankan      html  css  js  c++  java
  • [单元测试]Java单元测试,基于Mockito的第一次尝试

    Mockito 进行Mock单元测试入门
     
    个人理解:
    单元测试:对程序中最小的运行单元就行测试,java中通常是一个类
    Mock的作用是在JUnit的基础上,对于依赖进行模拟,人为的将集成测试封闭成黑盒的单元测试。
     
    其他的具体用发和概念可以自行google,网上已经有很多解释,这里只给像我这样刚刚入门,第一次写单元测试的人做一个引导。
     
     
    这里主要讲一下Mockito中 when(...).thenReturn(...) 的使用时机: 
    在单元测试的方法中,但有需要依赖于服务A的方法B的返回的时候,需要@Mock出服务A,然后用when模拟出调用的返回值
     
    依赖的服务A:
    public class A {
        public Map<String, String> B() {
            return new HashMap<>();
        }
    }
    需要进行单元测试的类MockUnit:
    public class MockUnit {
        @Resource
        private A a;
     
        public String mockUnitMethod(String s) {
            Map<String, String> m = a.B();
            
                    //.. some logic code
                    if (m.containsKey("key")) {
                            return "value";
                    }
                    
                    return "not found";
        }
    }

    具体单元测试代码:

    public class MockUnitTest {
     
        @InjectMockes
        private MockUnit mockUnit;
     
        @Mock 
        private A a;
     
        private Map<String, String> map;
        private Map<String, String> map2;
        @Before
        public void init() {
            MockitoAnnotations.initMocks(this);
            map = new HashMap<>();
            map.put("key", "value");
     
            map2 = new HashMap<>();
            map2.put("key2", "value2");
        }
     
        public void testMockUnitMethod() {
            when(a.B()).thenReturn(map).thenReturn(map2);
            
            // 因为在测试MockUnit这个方法的时候,内部会调用A的方法,也就是依赖A,
            // 所以这个时候应该在上面用注解Mock出A,然后用when()的方式,模拟出依赖的方法的返回值
            assertTrue(mockUnit.mockUnitMethod(anyString()).equals("value"));  // 第一次A返回map
            assertTrue(mockUnit.mockUnitMethod(anyString()).equals("value")); //  第二次A返回map2 
        }
    }
     其他的方法和概念可以自行理解~~~
  • 相关阅读:
    Linux任务调度
    用户管理——用户和用户组
    Linux实用指令
    spring模拟ioc
    浅谈log4j-3-不同输出样式
    浅谈log4j-2
    浅谈log4j
    windows下安装kibana
    【PHP】 解决报错:Error: php71w-common conflicts with php-common-5.4.16-43.el7_4.x86_64
    mysql 8.0设置日期为0000-00-00 00:00:00时报错
  • 原文地址:https://www.cnblogs.com/TinyBobo/p/9639680.html
Copyright © 2011-2022 走看看