Java PowerMockito static方法/new对象/public方法/private方法/public属性/private属性

Java PowerMockito static方法/new对象/public方法/private方法/public属性/private属性

  • 1 变量Mock
    • 1.1 公有变量
    • 1.2 私有变量
    • 1.3 公有静态变量
    • 1.4 私有静态变量
  • 2 方法Mock
    • 2.1 共有方法
    • 2.2 私有方法
    • 2.3 共有静态方法
    • 2.4 共有最终方法
  • 3 new对象Mock
    • 3.1 共有方法

1 变量Mock

package com.xu.test.service.impl;import com.xu.test.entity.Student;public class FiledValue {/*** 公有成员变量*/public Student publicValue = new Student();/*** 私有成员变量*/private Student privateValue = new Student();/*** 公有静态成员变量*/public static Student publicStaticValue = new Student();/*** 私有静态成员变量*/private static Student privateStaticValue = new Student();public void toStr(Student student) {System.out.println(student.toString());System.out.println(publicValue.toString());System.out.println(privateValue.toString());System.out.println(publicStaticValue.toString());System.out.println(privateStaticValue.toString());}}

1.1 公有变量

package com.xu.test;import com.xu.test.entity.Student;
import com.xu.test.service.impl.FiledValue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import org.powermock.reflect.internal.WhiteboxImpl;import java.lang.reflect.Field;@RunWith(PowerMockRunner.class)
@PrepareForTest({FiledValue.class})
public class FieldValueTest {@Testpublic void publicValue() throws Exception {// 创建要测试的对象FiledValue impl = PowerMockito.spy(new FiledValue());// 设置值impl.publicValue = new Student(1);// 方法调用impl.toStr(impl.publicValue);WhiteboxImpl.invokeMethod(impl, "toStr", impl.publicValue);}}

1.2 私有变量

package com.xu.test;import com.xu.test.entity.Student;
import com.xu.test.service.impl.FiledValue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import org.powermock.reflect.internal.WhiteboxImpl;import java.lang.reflect.Field;@RunWith(PowerMockRunner.class)
@PrepareForTest({FiledValue.class})
public class FieldValueTest {@Testpublic void privateValue() throws Exception {// 模拟值Student student = new Student(1);// 创建要测试的对象FiledValue impl = PowerMockito.spy(new FiledValue());impl.publicValue = student;// 方法一Field field = FiledValue.class.getDeclaredField("privateValue");field.setAccessible(true);field.set(impl, student);// 方法二Whitebox.setInternalState(impl, "privateValue", student);// 方法调用impl.toStr(impl.publicValue);WhiteboxImpl.invokeMethod(impl, "toStr", impl.publicValue);}}

1.3 公有静态变量

package com.xu.test;import com.xu.test.entity.Student;
import com.xu.test.service.impl.FiledValue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import org.powermock.reflect.internal.WhiteboxImpl;import java.lang.reflect.Field;@RunWith(PowerMockRunner.class)
@PrepareForTest({FiledValue.class})
public class FieldValueTest {@Testpublic void publicStaticValue() throws Exception {// 模拟值Student student = new Student(1);// 创建要测试的对象FiledValue impl = PowerMockito.spy(new FiledValue());// 设置值impl.publicValue = student;FiledValue.publicStaticValue = student;// 方法调用impl.toStr(impl.publicValue);WhiteboxImpl.invokeMethod(impl, "toStr", impl.publicValue);}}

1.4 私有静态变量

package com.xu.test;import com.xu.test.entity.Student;
import com.xu.test.service.impl.FiledValue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import org.powermock.reflect.internal.WhiteboxImpl;import java.lang.reflect.Field;@RunWith(PowerMockRunner.class)
@PrepareForTest({FiledValue.class})
public class FieldValueTest {@Testpublic void privateStaticValue() throws Exception {// 模拟值Student student = new Student(1);// 创建要测试的对象FiledValue impl = PowerMockito.spy(new FiledValue());// 设置值impl.publicValue = student;Field field = FiledValue.class.getDeclaredField("privateStaticValue");field.setAccessible(true);field.set(impl, student);// 方法调用impl.toStr(impl.publicValue);WhiteboxImpl.invokeMethod(impl, "toStr", impl.publicValue);}}

2 方法Mock

package com.xu.test.service.impl;public class MethodValue {public String publicMethod(String str) {return "Public" + str;}private String privateMethod(String str) {return "Private" + str;}public static String publicStaticMethod(String str) {return "Private" + str;}public final String publicFinalMethod(String str) {return "Final" + str;}}

2.1 共有方法

package com.xu.test;import com.xu.test.service.impl.MethodValue;
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 org.powermock.reflect.Whitebox;@RunWith(PowerMockRunner.class)
@PrepareForTest({MethodValue.class})
public class MethodValueTest {@Testpublic void publicMethod() throws Exception {// 创建要测试的对象MethodValue impl = PowerMockito.spy(new MethodValue());// 模拟私有方法的返回值PowerMockito.when(impl.publicMethod(Mockito.anyString())).thenReturn("-Public-");// 调用要测试的方法String str = impl.publicMethod("Test");// 验证结果Assert.assertEquals(str, "-Public-");}}

2.2 私有方法

package com.xu.test;import com.xu.test.service.impl.MethodValue;
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 org.powermock.reflect.Whitebox;@RunWith(PowerMockRunner.class)
@PrepareForTest({MethodValue.class})
public class MethodValueTest {@Testpublic void privateMethod() throws Exception {// 创建要测试的对象MethodValue impl = PowerMockito.spy(new MethodValue());// 模拟私有方法的返回值PowerMockito.when(Whitebox.invokeMethod(impl, "privateMethod", "Test")).thenReturn("MockedTest");// 调用要测试的方法String str = Whitebox.invokeMethod(impl, "privateMethod", "Test");// 验证结果Assert.assertEquals("MockedTest", str);}}

2.3 共有静态方法

package com.xu.test;import com.xu.test.service.impl.MethodValue;
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 org.powermock.reflect.Whitebox;@RunWith(PowerMockRunner.class)
@PrepareForTest({MethodValue.class})
public class MethodValueTest {@Testpublic void publicStaticMethod() {// 模拟静态方法的返回值PowerMockito.mockStatic(MethodValue.class);PowerMockito.when(MethodValue.publicStaticMethod("Test")).thenReturn("MockedTest");// 调用静态方法String str = MethodValue.publicStaticMethod("Test");// 验证结果Assert.assertEquals("MockedTest", str);}}

2.4 共有最终方法

package com.xu.test;import com.xu.test.service.impl.MethodValue;
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 org.powermock.reflect.Whitebox;@RunWith(PowerMockRunner.class)
@PrepareForTest({MethodValue.class})
public class MethodValueTest {@Testpublic void publicFinalMethod() {// 创建要测试的对象MethodValue impl = PowerMockito.spy(new MethodValue());// 模拟 final 方法的返回值PowerMockito.when(impl.publicFinalMethod("Test")).thenReturn("MockedTest");// 调用 final 方法String str = impl.publicFinalMethod("Test");// 验证结果Assert.assertEquals("MockedTest", str);}}

3 new对象Mock

package com.xu.test.service.impl;import com.xu.test.entity.Student;public class NewValue {public Student newPublic(Student student) {System.out.println(student.toString());return new Student(3);}}

3.1 共有方法

package com.xu.test;import com.xu.test.entity.Student;
import com.xu.test.service.impl.NewValue;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;@RunWith(PowerMockRunner.class)
@PrepareForTest({NewValue.class})
public class NewValueTest {@Testpublic void newPublic() throws Exception {// 模拟值Student student = new Student(5);// 创建要测试的对象NewValue impl = PowerMockito.spy(new NewValue());// 模拟私有方法的返回值PowerMockito.whenNew(Student.class).withArguments(3).thenReturn(student);// 调用要测试的方法// 调用要测试的方法Student result = impl.newPublic(new Student(1));// 验证结果Assert.assertEquals(result.getId(), 5);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ARM Cortex-M 系列 2.2 -- Cortex-M7 单步调试原理及实现详细介绍】

请阅读【嵌入式开发学习必备专栏】 文章目录 单步调试概述单步执行原理Debug stepping control using the DHCSR 紧接上篇文章 【ARM Cortex-M 系列 2.1 – Cortex-M7 Debug system registers】 单步调试概述 在ARMv7-M架构中,通过使用单步调试(Haltin…

数据结构与算法学习笔记一---顺序表的静态存储表示和实现(C语言)

目录 1.顺序表的静态存储过程 1.初始化 2.销毁 3.清空 4.表长 5.获取数据元素 6.直接前驱 7.直接后继 8.插入 9.删除 10.遍历 11.测试代码 前言 这篇博客主要是顺序表的静态分配存储表示。 1.顺序表的静态存储过程 我们使用静态数据来存储顺序表中的数据元素&#…

粒子群算法(Particle Swarm Optimization)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 算法背景 粒子群优化算法(Particle Swarm Optimization,PSO)的灵感来源于鸟群或鱼群的觅食行为。想象一下&a…

Shell脚本——批量清理Kubernetes集群中Evicted状态的pod

测试环境有一台宿主机出现了异常,大量的异常日志导致宿主机的磁盘使用率超过了85%,触发了上面的pod驱离策略,该宿主机上的的pod处于Evicted状态。在清理了磁盘之后,得手动处理掉这些Evicted状态的pod。 #!/bin/bash# 获取当前状态…

Teachable Machine:Google开发可在浏览器运行免编程机器学习工具

项目说明 Teachable Machine 是由 Google 开发的一款基于机器学习的在线工具,为用户提供了创建个性化机器学习模型的简便途径,无需深入专业领域或编程技能。 允许用户快速、简单地创建自己的机器学习模型,主要用于进行图像、声音和姿势等数据…

鸿蒙内核源码分析(内核态锁篇) | 如何实现快锁Futex(下)

本篇为快锁下篇,说清楚快锁在内核态的实现,解答以下问题,它们在上篇的末尾被提出来。 鸿蒙内核进程池默认上限是64个,除去两个内核进程外,剩下的都归属用户进程,理论上用户进程可以创建很多快锁&#xff0…

【Unity从零开始学习制作手机游戏】第01节:控制3D胶囊体运动

1. 新建Project L01 使用3D Mobile模板。 2. 建立一个平面,用来承载物体 3. 导入Unity库内的胶囊体 下载 StandardAssets https://download.unitychina.cn/download_unity/e80cc3114ac1/WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-5.6.7f1.exe …

RobbitMQ基本消息队列的消息接收

1.先给工程引入依赖 父工程有了子工程就不用导了 <!--AMQP依赖&#xff0c;包含RabbitMQ--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2.配置yml…

未来相遇过去:博物馆藏品管理平台的科技革新之旅

引言&#xff1a; 尊重历史&#xff0c;意味着保护其实体的载体。在博物馆这个时间的容器中&#xff0c;每一件藏品都承载着人类文明的印记&#xff0c;它们是历史的低语&#xff0c;是过去对现在的细语。在这篇文章中&#xff0c;我将带您走进博物馆的幕后&#xff0c;探究藏品…

软件工程中的版本控制有何重要性?

版本控制在软件工程中具有非常重要的作用&#xff0c;它不仅能够帮助开发者管理代码的历史版本&#xff0c;还能够促进团队协作和降低开发风险。以下是版本控制的一些关键重要性&#xff0c;以及如何在使用LabVIEW进行项目开发中应用版本控制&#xff1a; 历史记录保持&#xf…

/proc/modules文件

/proc/modules文件中列出了内核加载的所有模块的信息&#xff0c;与使用lsmod命令类似。 第一列&#xff1a;模块名称 第二列&#xff1a;模块使用的内存大小&#xff0c;单位是bytes 第三列&#xff1a;模块被load的次数 第四列&#xff1a;是否有其他模块依赖此模块&#…

Windows:管理用户账户,密码策略和安全配置

在Windows操作系统中&#xff0c;管理用户账户和密码策略是确保系统安全的关键步骤。本文将探讨如何通过PowerShell和其他Windows工具管理用户账户&#xff0c;包括查看和设置密码策略、检查用户状态&#xff0c;以及导出和导入安全策略。这些管理任务对于系统管理员尤其重要&a…

电口和光口

在网络配置工作中&#xff0c;总会有人问什么是电口和光口&#xff0c;下面对其进行简单的区分。 1、电口 电口是服务器和网络中对RJ45等各种双绞线接口的统称&#xff0c;其原因是这些端口都使用电作为信息的承载介 质&#xff0c;不过有时它也会包含同轴电缆端口。 2、光口…

Spring框架核心:揭秘Java厨房的智能烹饪艺术

前情回顾&#xff1a;Spring框架深度解析&#xff1a;打造你的Java应用梦工厂 六. 实现控制反转 6.1 描述如何在Spring中实现IoC 在Spring Town的厨房里&#xff0c;实现控制反转就像是将食材的采购和准备过程外包给了一个智能系统。这个系统知道每种食材的特性&#xff0c;也…

C++|内存管理(2)

目录 malloc/free和new/delete的区别 共同点 不同点 内存泄漏 什么是内存泄漏 内存泄漏的危害 内存泄漏分类 堆内存泄漏 系统资源泄漏 malloc/free和new/delete的区别 共同点 都是从堆上申请空间&#xff0c;并且需要用户手动释放。 不同点 1. malloc和free是函数&a…

Php swoole和mqtt

在 PHP 中使用 Swoole 处理 MQTT 订阅消息是一种高效的方式&#xff0c;可以充分利用 Swoole 协程的非阻塞特性和高性能 I/O 处理能力。下面是一个示例代码&#xff0c;演示了如何使用 Swoole 的 MQTT 客户端来订阅消息&#xff0c;并加以详细说明。 1. 安装 Swoole 首先&…

Kubernetes——两万字超细致集群搭建平台规划

目录 前言——常见的K8S安装部署方式 一、Kubernetes平台规划 1.单Master集群架构 2.多Master集群架构 二、集群规划 1.服务器硬件配置推荐 2.操作系统初始化 2.1关闭防火墙 2.2关闭SElinux 2.3关闭Swap 2.4添加Hosts 2.5调整内核参数 2.5同步时间 三、集群搭建…

为什么有的人炫富会倒霉健康的关系是保持适当的距离

目录 为什么有的人炫富会倒霉 健康的关系是保持适当的距离 为什么有的人炫富会倒霉 有的人的八字结构就是先天的“危险体质”,俗称惹祸精,你靠近他,跟他产生关系,就会他被连累,尤其是近距离关系,比如丈夫,妻子,闺蜜这些人,当一个人八字中婚姻宫或者夫妻星不太好的时…

AtCoder Beginner Contest 353(A~E)

文章目录 A Buildings1.基本思路&#xff1a;2.代码&#xff1a; B - AtCoder Amusement Park1.基本思路&#xff1a;2.代码&#xff1a; C - Sigma Problem1.基本思路&#xff1a;2.代码&#xff1a; D - Another Sigma Problem1.基本思路&#xff1a;2.代码&#xff1a; E - …

QT ERROR: Unknown module(s) in QT: xlsx怎么办

现象描述 QT编译c代码的时候&#xff0c;报这种QT ERROR: Unknown module(s) in QT: xlsx&#xff0c;应该如何解决&#xff1f; 这里&#xff0c;我简单记录一下自己的解决问题过程。有可能&#xff0c;对遇到同样的问题的你&#xff0c;也有所帮助 第一步 检查perl是否安装…