编写powermock用例步骤:
  
  类上面先写这两个注解@RunWith(PowerMockRunner.class)、@PrepareForTest(StudentService.class)
  
  先模拟一个假对象即studentdao方法中的局部变量
  
  用无参的方式new对象
  
  再模拟这个对象被调用时,是否有返回,有返回值给出默认值,没有用doNothing()
  
  验证有返回值使用assertEquals即可,无返回值使用Mockito.verify验证
  
  实际案例
  
  接着上一篇文章中的代码,修改下service中的代码,这次我不通过构造器注入Dao,在方法中new一个StudentDao,创建一个名为StudentNewService的类。
  
  具体示例代码如下:
  
  复制代码
  
  package com.rongrong.powermock.service;
  
  import com.rongrong.powermock.dao.StudentDao;
  
  /**
  
  * @author rongrong
  
  * @version 1.0
  
  * @date 2019/11/17 21:13
  
  */
  
  public class StudentNewService {
  
  /**
  
  * 获取学生个数
  
  * @return返回学生总数
  
  */
  
  public int getTotal() {
  
  StudentDao studentDao = new StudentDao();
  
  return studentDao.getTotal();
  
  }
  
  /**
  
  * 创建学生
  
  * @param student
  
  */
  
  public void createStudent(Student student) {
  
  StudentDao studentDao = new StudentDao();
  
  studentDao.createStudent(student);
  
  }
  
  }
  
  复制代码
  
  针对上面修改部分代码,进行单元测试,以下代码有采用传统方式测试和采用powermock方式进行测试,具体代码如下:
  
  复制代码
  
  package com.rongrong.powermock.service;
  
  import com.rongrong.powermock.dao.StudentDao;
  
  import org.junit.Assert;
  
  import org.junit.Test;
  
  import org.junit.runner.RunWith;
  
  import org.mockito.Mockito;
  
  import org.powermock.api.mockito.PowerMockito;
  
  import org.powermock.core.classloader.annotations.PrepareForTest;
  
  import org.powermock.modules.junit4.PowerMockRunner;
  
  import static org.junit.Assert.assertEquals;
  
  import static org.junit.Assert.fail;
  
  /**
  
  * @author rongrong
  
  * @version 1.0
  
  * @date 2019/11/20 21:42
  
  */
  
  @RunWith(PowerMockRunner.class)
  
  @PrepareForTest(StudentNewService.class)
  
  public class TestNewStudentService {
  
  /**
  
  * 传统方式测试
  
  */
  
  @Test
  
  public void testGetStudentTotal() {
  
  StudentNewService studentNewService = new StudentNewService();
  
  int total = studentNewService.getTotal();
  
  assertEquals(total, 10);
  
  }
  
  /**
  
  * @desc测试有返回值类型 采用powermock进行测试获取学生个数
  
  */
  
  @Test
  
  public void testGetStudentTotalWithPowerMock() {
  
  //先模拟一个假对象即studentdao方法中的局部变量
  
  StudentDao studentDao = PowerMockito.mock(StudentDao.class);
  
  try {
  
  //这句话我按照英文理解就是,我用无参的方式new了一个StudentDao对象
  
  PowerMockito.whenNew(StudentDao.class).withNoArguments().thenReturn(studentDao);
  
  //再模拟这个对象被调用时,我们默认假定返回10个证明调用成功
  
  PowerMockito.when(studentDao.getTotal()).thenReturn(10);
  
  //这里就是service就不用再说了
  
  StudentNewService studentNewService = new StudentNewService();
  
  int total = studentNewService.getTotal();
  
  assertEquals(total, 10);
  
  } catch (Exception e) {
  
  fail("测试失败了!!!");
  
  e.printStackTrace();
  
  }
  
  }
  
  /**
  
  * @desc测试的无返回值类型 采用powermock进行测试创建学生
  
  */
  
  @Test
  
  public void testCreateStudentWithPowerMock() {
  
  //先模拟一个假对象即studentdao方法中的局部变量
  
  StudentDao studentDao = PowerMockito.mock(StudentDao.class);
  
  try {
  
  //这句话我按照英文理解就是,我用无参的方式new了一个StudentDao对象
  
  PowerMockito.whenNew(StudentDao.class).withNoArguments().thenReturn(studentDao);
  
  Student student = new Student();
  
  //这句话注释与否都能运行通过,也就是我只能判断他是否被调用
  
  //PowerMockito.doNothing().when(studentDao).createStudent(student);
  
  //这里就是service就不用再说了
  
  StudentNewService studentNewService = new StudentNewService();
  
  studentNewService.createStudent(student);
  
  Mockito.verify(studentDao).createStudent(student);
  
  } catch (Exception e) {
  
  fail("测试失败了!!!");
  
  e.printStackTrace();
  
  package com.rongrong.powermock.service;
  
  import com.www.zheshengjpt.com rongrong.powermock.dao.StudentDao;
  
  import org.www.tainfengyue.cn junit.Assert;
  
  import org.junit.Test;
  
  import org.junit.runner.RunWith;
  
  import org.www.jinch2019.cn mockito.Mockito;
  
  import org.www.jinfengyuL1.cn powermock.api.mockito.PowerMockito;
  
  import org.www.xinxingylpt.com/ powermock.core.classloader.annotations.PrepareForTest;
  
  import org.powermock.modules.junit4.PowerMockRunner;
  
  import static org.junit.Assert.assertEquals;
  
  import static org.junit.Assert.fail;
  
  /**
  
  * @author rongrong
  
  * @version 1.0
  
  * @date 2019/11/20 21:42
  
  */
  
  @RunWith(PowerMockRunner.class)
  
  @PrepareForTest(StudentNewService.class)
  
  public class TestNewStudentService {
  
  /**
  
  * 传统方式测试
  
  */
  
  @Test
  
  public void testGetStudentTotal() {
  
  StudentNewService www.yuntianyull.cn studentNewService = new StudentNewService();
  
  int total www.jintianxuesha.com= studentNewService.getTotal();
  
  assertEquals(total, 10);
  
  本文大致列举了几种常见的安全措施机制包括:数据加密、数据加签、时间戳机制、AppId机制、限流机制、黑名单机制以及数据合法性校验;当然肯定有其他方式,欢迎补充。

用无参的方式new对象相关推荐

  1. ExtJs6 路由有参无参使用方式

    当我们想通过监听uri的地址的改变来做一些操作时我们可以使用extjs的路由(routes),下面来介绍一下如何使用简单路由和使用路由来传递参数. 1.简单的路由: 首先我们使用下面代码来发送路由 t ...

  2. java的无参构造方法_Java有参构造方法和无参构造方法

    1.定义: 编写一个类时没有添加无参构造方法,那么编译器会自动添加无参构造方法:(如果自己添加构造函数,无论有参数或是没参数,默认构造函数都将无效) 编写时添加了有参构造方法而未添加无参构造方法,那么 ...

  3. c/c++教程 - 2.4.2.1~2 对象的初始化和清理,构造函数和析构函数,构造函数的分类和调用(有参构造,无参构造,普通构造,拷贝构造,括号法,显示法,隐式转换法,匿名对象)

    目录 4.2 对象的初始化和清理 4.2.1 构造函数和析构函数 4.2.2 构造函数的分类及调用 相关教程 4.2 对象的初始化和清理 生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候 ...

  4. J2EE高级开发框架小课程之Spring框架1——Spring创建三种方式:使用无参构造器创建对象(bean标签的方式),使用静态方法创建对象,使用实例方法创建对象(非静态方法)

    Spring是什么? 是一个开源的.用于简化企业级应用开发的应用开发框架. a.简化开发: Spring框架对很多常用的api做了简化,比如,使用Spring jdbc (Spring jdbc是Sp ...

  5. C++创建类对象时(无参)后不加括号与加括号的区别

    在不考虑用new动态创建对象的情况下,用最普通的 类名 对象名(参数); 的方法创建对象 先贴上最正常最普通的代码 #include<iostream> using namespace s ...

  6. 通过无参构造实例化对象

    通过无参构造实例化对象,被实例化对象的类中必须存在无参构造方法. package org.lxh.demo15.getclassdemo ; class Person{private String n ...

  7. 方法功能从无参方法、含参方法到重载方法

    时间紧张,先记一笔,后续优化与完善. 一.无参方法 a.无参方法法语: 访问修饰符> 返回类型 <方法名>(){ //方法的体主 } b.义定 什么是无参方法?所谓无参方法即形如,诸 ...

  8. java无参试题_JavaEE基础面试题0

    2019/7/30 1.java 和 C++ 的区别? 都是面向对象的语言,都支持封装.继承和多态 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承 ...

  9. python中的无参装饰器和有参装饰器

    python中的无参装饰器和有参装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 装饰器特点: 1>.开放封闭原则,即对扩展是开放的,对修改时封闭的: 2>.装饰器 ...

最新文章

  1. 【剑指offer】14、剪绳子
  2. 根据 UserAgent 判断网页是在浏览器、或在微信、或在APP中
  3. boost::geometry::detail::overlay::get_relative_order用法的测试程序
  4. python mp4 切片_FFmpeg MP4视频切片成TS m3u8播放 好文收集
  5. 7_less中引入其他文件 / 模块
  6. 将自己的姿态放低:你应具备赚钱以外的四种能力
  7. android 转场动画 共享元素,Android-Animation-Set
  8. 3D图库框架范围与示例
  9. Virtual Private Network(虚拟专用网络)详解
  10. php实现五维雷达图,Unity 属性雷达图
  11. web服务器基于那个协议,网页浏览服务基于什么协议 Web服务器是基于什么协议...
  12. imputation-文献:False signals induced by single-cell imputation(scRNA-seq插补引入的假阳性问题)
  13. 进口车在国外到底卖多少钱
  14. 排序——使每位学生都有座位的最少移动次数
  15. 忘记teamviewer密码怎么办?
  16. 厦大 1395 组合
  17. 解决微信图片反防盗链的方法(此图片来自微信公众平台,未经允许不可引用)
  18. Tom小猫,让我看清你的五脏六腑1
  19. Python彩色图片转手绘风格
  20. Google Flutter 1.0正式发布

热门文章

  1. 关于时间戳和标准时间、国际标准时间的一些方法
  2. (翻译)邀请好友模式(Invite friends)
  3. Nano 10GX—AD模块如何采集模拟量数据
  4. SEO灰帽手段常用四种手法,仅供参考
  5. 《Oracle PL/SQL实例精讲》学习笔记1——数据准备
  6. classList属性配合内置方法add()、remove()、toggle(),添加或删除某个类,以此改变CSS样式
  7. Unity3d 网页插件BestHttp使用介绍
  8. iOS storyboard 用法详解
  9. IPGuard启动加密常用的策略
  10. Flash Play 闪玩