单元测试


什么是单元测试?
单元测试是开发人员编写,用于测试自己的代码在特定条件下的检测,验证代码的正确性。
单元测试作用。
单元测试是为了保证代码的正确性,代码开发比较复杂,没有人可以保证自己的代码没有任何问题,功能也完整可用,需要通过不同的途径来验证代码的正确性。单元测试就是其中的方式之一。
单元测试自我总结技巧

我最近使用的单元测试的框架是testNg
1. mock的使用

Mock可以用来mock类,也可以用来mock方法。Mock类有常规的类,还静态类,mock的方法有啥,现在想想也忘记了,感觉没啥区别。其他待补充
Mock常规的类,例如:
ProceedingJoinPoint point  = PowerMockito.mock(ProceedingJoinPoint.class);
MethodSignature signature  = PowerMockito.mock(MethodSignature.class);
静态类:
PowerMockito.mockStatic(AnnotationParseUtil.class);
Mock静态类需要加注解@PrepareForTest({AnnotationParseUtil.class }),如果一个测试类有多个静态类需要mock,那需要mock的静态类用逗号分割就可以了,比如这个注解为@PrepareForTest({AnnotationParseUtil.class,TimeUtil.class})

Mockito方法:Mockito.when(类实例.方法名(参数)) .thenReturn(返回值实例);
其中返回值的实例就是原方法的返回值类型的一个实例。
如果在mock过程中,遇到一些需要特殊参数的方法,或者无法手动编造的参数,可用Mockito.any() 或Mockito.anyString() 或 Mockito.anyList() 等等,具体用什么参数代替,可以去Mockito的父类Matchers里面去找一下,可以说大部分都能找到。

2. 私有方法的单元测试
使用反射来调用私有化方法,
//获取被测试类的class对象
Class clazz = healthCheckService.getClass();
try {
//getDeclaredMethod() :获取需要被测试的函数名 && getMethod():只可获取公共的方法
Method addMethod = clazz.getDeclaredMethod("sendSmsAndUpdateAlarmStatus", String.class, String.class);
// 对所有属性设置访问权限 当类中的成员变量为private时 必须设置此项true
addMethod.setAccessible(true);//设置该方法可见
//调用被测试函数
addMethod.invoke(healthCheckService, deviceId, alertSendContent);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

3. 对于try catch 的覆盖

在@Test后面加上类似的(expectedExceptions = NullPointerException.class),catch到什么异常就在注解里抛什么异常。多写几个同样的方法(不同名),抛出不同的异常,那所有的异常都可以覆盖了。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值