关于mockito:一文浅谈Mockito使用-京东云技术团队
一、后期筹备~1、筹备工作<!--mockito依赖-->a<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.7.19</version> <scope>test</scope></dependency><!-- junit依赖 --><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope></dependency>2、入门常识1)Mockito:简略轻量级的做mocking测试的框架;2)mock对象:在调试期间用来作为实在对象的替代品;3)mock测试:在测试过程中,对那些不容易构建的对象用一个虚构对象来代替测试的办法就叫mock测试;4)stub:打桩,就是为mock对象的办法指定返回值(可抛出异样);5)verify:行为验证,验证指定办法调用状况(是否被调用,调用次数等);3、五分钟入门Demo@Testpublic void test0() { //1、创立mock对象(模仿依赖的对象) final List mock = Mockito.mock(List.class); //2、应用mock对象(mock对象会对接口或类的办法给出默认实现) System.out.println("mock.add result => " + mock.add("first")); //false System.out.println("mock.size result => " + mock.size()); //0 //3、打桩操作(状态测试:设置该对象指定办法被调用时的返回值) Mockito.when(mock.get(0)).thenReturn("second"); Mockito.doReturn(66).when(mock).size(); //3、应用mock对象的stub(测试打桩后果) System.out.println("mock.get result => " + mock.get(0)); //second System.out.println("mock.size result => " + mock.size()); //66 //4、验证交互 verification(行为测试:验证办法调用状况) Mockito.verify(mock).get(Mockito.anyInt()); Mockito.verify(mock, Mockito.times(2)).size(); //5、验证返回的后果(这是JUnit的性能) assertEquals("second", mock.get(0)); assertEquals(66, mock.size());}二、让咱们开始学习吧!1、行为验证• 一旦mock对象被创立了,mock对象会记住所有的交互,而后你就能够选择性的验证你感兴趣的交互,验证不通过则抛出异样。 @Testpublic void test1() { final List mockList = Mockito.mock(List.class); mockList.add("mock1"); mockList.get(0); mockList.size(); mockList.clear(); // 验证办法被应用(默认1次) Mockito.verify(mockList).add("mock1"); // 验证办法被应用1次 Mockito.verify(mockList, Mockito.times(1)).get(0); // 验证办法至多被应用1次 Mockito.verify(mockList, Mockito.atLeast(1)).size(); // 验证办法没有被应用 Mockito.verify(mockList, Mockito.never()).contains("mock2"); // 验证办法至少被应用5次 Mockito.verify(mockList, Mockito.atMost(5)).clear(); // 指定办法调用超时工夫 Mockito.verify(mockList, timeout(100)).get(0); // 指定工夫内须要实现的次数 Mockito.verify(mockList, timeout(200).atLeastOnce()).size();}2、如何做一些测试桩stub• 默认状况下,所有的函数都有返回值。mock函数默认返回的是null,一个空的汇合或者一个被对象类型包装的内置类型,例如0、false对应的对象类型为Integer、Boolean; ...