单元测试
单元测试框架: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工具,用于检测单元测试覆盖到的分支,可以很方便的看出来:

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

浙公网安备 33010602011771号