官方文档:https://github.com/hehonghui/mockito-doc-zh/blob/master/README.md#0
一、Mockito是什么?
简单来说就是造假数据的,一种模拟类的对象、行为、方法,mock想要的结果的库,例如一个类
class Person{String name;int age;public boolean isSmallAge(int age){return age< this.age;} }
对这个类进行单元测试编写
class PersonTest{//不使用mockito @Testpublic void testIsSmallAge(){Person person = new Person();person.age = 10;boolean isSmallAge = person.isSmallAge(20);assertFalse(isSmallAge);}//使用mockito库 @Testpublic void testIsSmallAgeByMock(){//我们可以使用mockito模拟这个方法永远返回false或者turePerson person = mock(Person.class);//造一个Persion的实例相当于new Person,但不同的是只有mock出来的才能操作下面的方法返回值when(person.isSmallAge(anyInt())).thenReturn(false);//让这个方法在调用时传任何age值都只返回falseassertFalse(person.isSmallAge(1));//使用断言判断这个方法返回值是否返回false } }
我们可以看到,mock可以创建一个实例Person并且控制内部方法的返回结果,而不用去考虑其方法是否有具体的参数和参数在其内部执行的逻辑是否正确,强行的赋予其方法返回结果,当然这是这个库的特点,但这种方式的单元测试不能算好的测试用例,这里只是简单的让你们对这个库有个初步印象,之后我们便继续加深其用法。
二、注解的用法
- @Mock
- @Spy
- @InjectMocks
未完待续.....有时间继续写,暂时停笔