Mock测试框架(Mockito为例)

匿名 (未验证) 提交于 2019-12-03 00:25:02

在做单元测试的时候,有的时候用到的一些类,我们构造起来不是那么容易,比如HttpRequest,或者说某个Service依赖到了某个Dao,想构造service还得先构造dao,这些外部对象构造起来比较麻烦。 所以出现了Mock! 我们可以用 Mock 工具来模拟这些外部对象,来完成我们的单元测试。

  实现Mock技术的优秀开源框架有很多,下面以Mockito为例,用几个简单例子来介绍Mock工具的基本使用:

@Test public void simpleTest(){     //mock    List<String> list = Mockito.mock(List.class);     //list.get(0)  helloworld    //Mock List Mock瀵硅薄     //Mock List    //Mock    //Mock get(0)    Mockito.when(list.get(0)).thenReturn("helloworld");     //list.get(0) helloworld     String result = list.get(0);     System.out.println(result);     //(get(0))     Mockito.verify(list).get(0);     Assert.assertEquals("helloworld", result); }
@Test public void testMockMethod() {     TestService obj=mock(TestServiceImpl.class);     when(obj.hello("z3")).thenReturn("hello l4");     String actual=obj.hello("z3");     assertEquals("hello l4",actual);     verify(obj).hello("z3");     //verify(obj,times(1)).hello("z3"); //}

  2.验证顺序

@Test public void testMockMethodInOrder() {     TestService objOther = Mockito.mock(TestServiceImpl.class);     TestService objCn = Mockito.mock(TestServiceImpl.class);      Mockito.when(objOther.hello("z3")).thenReturn("hello l4");     Mockito.when(objCn.hello("z3")).thenReturn("hello ");      String other = objOther.hello("z3");  // objOther    Assert.assertEquals("hello l4", other);     String cn = objCn.hello("z3");          // objCn    Assert.assertEquals("hello ", cn);      InOrder inOrder = Mockito.inOrder(objOther, objCn); //    inOrder.verify(objOther).hello("z3");     inOrder.verify(objCn).hello("z3"); }

  3.非局部模拟

// When().thenReturn() @Test public void testSkipExpect() {     TestService obj = Mockito.mock(TestServiceImpl.class);     //helloz3null     //    Assert.assertEquals(null, obj.hello("z3"));     //showshowobjshow    obj.show();     Mockito.verify(obj).hello("z3");     Mockito.verify(obj).show(); }

  4.局部模拟

//--spy()@Test public void testSpy() {     TestService obj = Mockito.spy(new TestServiceImpl());     Mockito.doNothing().when(obj).show();  //show    Assert.assertEquals("z3",obj.hello("z3"));     obj.show();     Mockito.verify(obj).hello("z3");     Mockito.verify(obj).show(); }

  5.陷阱

//@Test public void testSpy2() {     TestService obj = Mockito.spy(new TestServiceImpl());     //when thenReturn    Mockito.when(obj.hello("z3")).thenReturn("hello l4");     Assert.assertEquals("hello l4",obj.hello("z3"));     Mockito.verify(obj).hello("z3"); }
//@Test public void testSpy3() {     TestService obj = Mockito.spy(new TestServiceImpl());     Mockito.doReturn("hello l4").when(obj).hello("z3");     Assert.assertEquals("hello l4",obj.hello("z3"));     Mockito.verify(obj).hello("z3"); }


引用:https://www.cnblogs.com/xuzekun/p/8044803.html


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!