单元测试

单元测试框架:JUnit

在方法上加@Test注解即可。

Assert用于断言。

mockito用于mock对象。

举例说明:

  @Test
  public void testAddHttp(){
    CalcUtil calcUtil = new CalcUtil();
    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
    Mockito.when(request.getParameter("a")).thenReturn("1");
    Mockito.when(request.getParameter("b")).thenReturn("2");
    double result = calcUtil.addHttp(request);
    Assert.assertEquals(3,result,0);
  }

calcUtil.addHttp实现:

  public double addHttp(HttpServletRequest request){
    String a = request.getParameter("a");
    String b = request.getParameter("b");
    return Double.valueOf(a)+Double.valueOf(b);
  }

 

这里可以看到我们不用真的用http调用,只需要“造一个假的”HttpServletRequest对象,并对其函数返回进行设置,即可。

当然我们也可以自己写一个HttpServletRequest实现类,但是用mock框架更方便。

 

当方法中有多个分支时,怎么确保单元测试覆盖所有分支呢?

IDEA和Eclipse都有Code coverage工具,用于检测单元测试覆盖到的分支,可以很方便的看出来:

 

 绿色的就是覆盖到的代码,红色的是没覆盖到的。

 

posted @ 2022-01-13 16:59  hucat  阅读(56)  评论(0)    收藏  举报