用无参的方式new对象
编写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对象相关推荐
- ExtJs6 路由有参无参使用方式
当我们想通过监听uri的地址的改变来做一些操作时我们可以使用extjs的路由(routes),下面来介绍一下如何使用简单路由和使用路由来传递参数. 1.简单的路由: 首先我们使用下面代码来发送路由 t ...
- java的无参构造方法_Java有参构造方法和无参构造方法
1.定义: 编写一个类时没有添加无参构造方法,那么编译器会自动添加无参构造方法:(如果自己添加构造函数,无论有参数或是没参数,默认构造函数都将无效) 编写时添加了有参构造方法而未添加无参构造方法,那么 ...
- c/c++教程 - 2.4.2.1~2 对象的初始化和清理,构造函数和析构函数,构造函数的分类和调用(有参构造,无参构造,普通构造,拷贝构造,括号法,显示法,隐式转换法,匿名对象)
目录 4.2 对象的初始化和清理 4.2.1 构造函数和析构函数 4.2.2 构造函数的分类及调用 相关教程 4.2 对象的初始化和清理 生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候 ...
- J2EE高级开发框架小课程之Spring框架1——Spring创建三种方式:使用无参构造器创建对象(bean标签的方式),使用静态方法创建对象,使用实例方法创建对象(非静态方法)
Spring是什么? 是一个开源的.用于简化企业级应用开发的应用开发框架. a.简化开发: Spring框架对很多常用的api做了简化,比如,使用Spring jdbc (Spring jdbc是Sp ...
- C++创建类对象时(无参)后不加括号与加括号的区别
在不考虑用new动态创建对象的情况下,用最普通的 类名 对象名(参数); 的方法创建对象 先贴上最正常最普通的代码 #include<iostream> using namespace s ...
- 通过无参构造实例化对象
通过无参构造实例化对象,被实例化对象的类中必须存在无参构造方法. package org.lxh.demo15.getclassdemo ; class Person{private String n ...
- 方法功能从无参方法、含参方法到重载方法
时间紧张,先记一笔,后续优化与完善. 一.无参方法 a.无参方法法语: 访问修饰符> 返回类型 <方法名>(){ //方法的体主 } b.义定 什么是无参方法?所谓无参方法即形如,诸 ...
- java无参试题_JavaEE基础面试题0
2019/7/30 1.java 和 C++ 的区别? 都是面向对象的语言,都支持封装.继承和多态 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承 ...
- python中的无参装饰器和有参装饰器
python中的无参装饰器和有参装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 装饰器特点: 1>.开放封闭原则,即对扩展是开放的,对修改时封闭的: 2>.装饰器 ...
最新文章
- 【剑指offer】14、剪绳子
- 根据 UserAgent 判断网页是在浏览器、或在微信、或在APP中
- boost::geometry::detail::overlay::get_relative_order用法的测试程序
- python mp4 切片_FFmpeg MP4视频切片成TS m3u8播放 好文收集
- 7_less中引入其他文件 / 模块
- 将自己的姿态放低:你应具备赚钱以外的四种能力
- android 转场动画 共享元素,Android-Animation-Set
- 3D图库框架范围与示例
- Virtual Private Network(虚拟专用网络)详解
- php实现五维雷达图,Unity 属性雷达图
- web服务器基于那个协议,网页浏览服务基于什么协议 Web服务器是基于什么协议...
- imputation-文献:False signals induced by single-cell imputation(scRNA-seq插补引入的假阳性问题)
- 进口车在国外到底卖多少钱
- 排序——使每位学生都有座位的最少移动次数
- 忘记teamviewer密码怎么办?
- 厦大 1395 组合
- 解决微信图片反防盗链的方法(此图片来自微信公众平台,未经允许不可引用)
- Tom小猫,让我看清你的五脏六腑1
- Python彩色图片转手绘风格
- Google Flutter 1.0正式发布