(工作笔记)jmockit的使用-mock私有变量、静态变量、代码块

java mock 文章目录一、Mock静态块,静态变量,普通方法1.准备工作2.mock静态块和静态变量3.mock普通方法二、Mock静态方法1.准备工作2.mock静态方法 一、Mock静态块,静态变量,普通方法 1.准备工作 jar包版本最好保持一致 <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version> 阅读详情

一、jmockit配置

变量

    <properties>
        <jmockit.version>1.43</jmockit.version>
    </properties>

依赖

		<dependency>
            <groupId>org.jmockit</groupId>
            <artifactId>jmockit</artifactId>
            <version>${jmockit.version}</version>
            <scope>test</scope>
        </dependency>

配置(版本1.42以上必须)

			<plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.21.0</version> <!-- or some other version -->
                <configuration>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
                    </argLine>
                    <!-- ... -->
                </configuration>
            </plugin>

二、实例

2.1 被测对象

package com.test.service;

/**
 * @author lu
 * @date 2018/12/13
 */
public class JMockitoSupportService {

    private String privateData="privateData";

    private String constuctData;

    private static String staticData;

    {
        constuctData="constuctData";
    }

    static{
        staticData="staticData";
    }

    public boolean sayHello(String output){
        System.out.println(output);
        if(output.equals("true")){
            return true;
        }else{
            return false;
        }
    }

    public static boolean sayStaticHello(String output){
        System.out.println(output);
        if(output.equals("true")){
            return true;
        }else{
            return false;
        }
    }

    public final boolean sayFinalHello(String output){
        System.out.println(output);
        if(output.equals("true")){
            return true;
        }else{
            return false;
        }
    }


    public String getPrivateData() {
        return privateData;
    }

    public String getConstuctData() {
        return constuctData;
    }

    public static String getStaticData() {
        return staticData;
    }
}

2.2 测试类

import com.test.service.JMockitoSupportService;
import mockit.*;
import mockit.internal.reflection.FieldReflection;
import org.junit.Before;
import org.junit.Test;


public class JMockitNewTest {

	//私有成员mock
    @Injectable
    String privateData="private Mock Data";

	//代码块mock
    @Injectable
    String constuctData="constuct Mock Data";

    @Injectable
    public static String staticData="static Mock Data";
    
	//测试对象
    @Tested
    JMockitoSupportService jMockitoSupportService;

    public static class JMockitNewMockTest extends MockUp<JMockitoSupportService>{

		//mock代码块和构造函数
        @Mock
        void $init(Invocation invocation) {
            JMockitoSupportService jMockitoSupportService=invocation.getInvokedInstance();
            //1.44 废弃 1.45 删除
            Deencapsulation.setField(jMockitoSupportService,"staticData",staticData);
        }
        //mock静态代码块
        @Mock
        void $clinit(Invocation invocation){

        }
    }


    @Before
    public void setUp() {
        new JMockitNewMockTest();
        //1.45静态变量需要通过反射注入
//        FieldReflection.setFieldValue(JMockitoSupportService.class.getDeclaredField("staticData")
//                ,jMockitoSupportService,staticData);
    }

    @Test
    public void testJMockit(){
        System.out.println(jMockitoSupportService.getConstuctData());
        System.out.println(jMockitoSupportService.getPrivateData());
        System.out.println(jMockitoSupportService.getStaticData());
        System.out.println(JMockitoSupportService.getStaticData());
    }

}
【mockito高级篇】mock私有、静态、变量、异常等场景 mockito对私有、静态、变量、异常等特殊场景的mock 阅读详情

相关推荐

JMockit学习笔记

基本概念常用注解 @Mocked:被修饰的对象将会被Mock,对应的类和实例都会受影响(同一个测试用例中) @Injectable:仅Mock被修饰的对象 @Capturing:可以mock接口以及其所有的实现类 @Mock:MockUp模式中,指定被Fake的方法 常用的类 Expectations:期望,指定的方法必须被调用 StrictExpectations:严格的期望,指定方法必须按照顺序

楚兴 5529

JMockit mock 静态块 static block

类StaticBlockService包含一个静态块,该静态块中语句执行必然报异常导致类初始化失败。 @Service public class StaticBlockService { static { int a = 1 / 0; } public void test() { } } 另一个类TestService引用StaticBlockService ,由于StaticBlockService 初始化失败,TestService也无法正常初始化

印贤卓的博客 3053

OI 生涯回忆录 《Pilgrimage》

前言 于 NOI2020 后写下本文。 本文简单提及了在写作时尚能回忆起来的,在我的 OI 生涯中对我的影响重大的人、事、比赛等。 写作本文,旨在在回忆允许的范围内,对 OI 生涯进行一定程度上的梳理,总结。 开端 入门 我最早接触计算机程序设计,是在小学。 那时候,我的数学成绩不错,就被老师推荐去学习编程。 就这样,我在局前街小学的何静老师的指导下,走上了编程的道路。 小学时的编程,与其说是 “竞赛” ,不如说是 “兴趣班” 。 当时,包括我在内,很多小孩子天性是浮躁的。支撑我对着无聊的代码学下去的,并不

cz_xuyixuan的博客 1万+

mock 使用小结

mock使用

qq_49879334的博客 3410

初识数据结构之入门必懂——线性表(顺序表)

本文将介绍数据结构中的线性表与线性表中最简单的结构——顺序表

m0_64705485的博客 905

《湖科大教书匠计算机网络》学习笔记总目录+思维导图

本篇文章是对《湖科大教书匠计算机网络》所有知识点的笔记总结归档和计算机网络的思维导图

weixin_73077810的博客 8249

Mockito mock类私有变量的值

mockito怎么mock一个类的私有属性? @InjectMocks private UserServiceImpl userService; @Test public void test() { Field apiField = UserServiceImpl.class.getDeclaredField("username"); FieldSetter.setField(userService, apiField, "1");

Mint6的博客 1万+

Python实战:用MNE-Python从脑电数据中提取P300成分(附完整代码)

本文提供了一份使用MNE-Python从脑电数据中提取P300成分的完整实战指南。通过详细的代码示例,系统讲解了从环境搭建、数据加载、预处理(滤波、分段、伪迹剔除)到P300波形提取、可视化与参数量化的全流程。重点介绍了如何利用零相位滤波和叠加平均技术,从EEG信号中精准分离出反映认知加工的P300事件相关电位,适用于脑机接口与认知神经科学研究。

weixin_29240343的博客 338

JMockit Mock 私有方法和私有属性

JMockit Mock 私有方法和私有属性 原文http://unmi.cc/jmockit-mock-private-methods-fields/ 前面说过 JMockit 因身处前线,所以简直无不可,本节例子演示 JMockit 怎么 Mock 私有方法和私有属性,示例虽然是静态方法和属性,但因采用的是反射手法,所以这种Deencapsulation 的 Mock 手段同样适用于...

4691

数字IC后端层次化Hierarchical Flow子系统Sub-System模块 block partition和pin assignment细节盘点

数字IC后端培训教程之Hierarchical Flow子系统block partition和pin assignment详细教程

weixin_37584728的博客 1605

4-都2026年了,嵌入式发展前景怎么样,还适合入行吗?

本文系统分析了嵌入式行业的发展前景,指出到2026年嵌入式将迎来由"万物智联"驱动的黄金周期。文章回顾了嵌入式技术的四个演进阶段,从专用计算机到AIoT时代,强调其技术积累的延续性。作者从人才流向、产业智能化转型、高校新增专业等角度论证嵌入式行业的蓬勃发展,并提出"铁三角"模型分析其驱动力和护城河。最后给出职业发展路径建议,认为嵌入式适合长期主义者,在智能汽车、边缘计算等领域有广阔前景。文章建议读者抓住产业升级机遇,选择这一稳定且有复利效应的技术赛道。

指尖动听知识库 389

Jmockit的使用总结

前言 我几乎都是参考JMockit中文网学习的Jmockit。在这必须得强烈安利一下啊。其实我刚开始看文档的时候,MockUp、@Mock、@Test、@Mocked、@Injectable、@Capturing、Expectations、Verifications那么多注解和类,傻傻分不清。后来慢慢总结了一下自己的理解思路。 这里,我没有像原笔者从概念->语法->用法->原理那...

hello stone 1万+

路径跟踪 | 图解纯追踪算法Pure Pursuit(附ROS C++/Python/Matlab仿真)

纯追踪算法(Pure Pursuit)参考了人类驾驶行为,其基本思想是在待跟踪路径上设置预瞄点(goal-ahead),通过简单的几何方法驱动机器人跟踪预瞄点直至抵达目标位置.本文详细推导纯追踪算法的理论原理及其变种——自适应纯追踪算法(APP)和规范化纯追踪算法(RPP),并提供ROS C++/Python/Matlab三种仿真实现加深理解

FRIGIDWINTER的博客 8408

使用Mock框架JMockit进行单元测试

关于单元测试,我们先上一段代码,如下示例: public String sayHello() { Locale locale = Locale.getDefault(); if (locale.equals(Locale.CHINA)) { // 在中国,就说中文 return "你好,世界!"; } else { // 在其它国家,就说英文 return "H...

chendaike的博客 4597

如何调试10G/25G以太网IP自协商/Link Training

如果是40G/50G, 100G以太网,选的是多通道的IP,务必保证两端的通道0是正确对接上的,因为在做自协商的时候,以太网只使用通道0,其它通道需在自协商完成后再加入工作。b. 自协商的工作完全由IP自动完成的,所以只要配置没问题,你只需要耐心等待就可以看到自协商的完成,以an_good_check为标志,并且进入下一步linktraining。c. 在LT的过程中,首先你要等到IP能够锁定LT帧,即frame_lock拉高,然后你就可以进行你自己的LT算法了,与AN不同LT是由客户手动完成的。

qq_43416206的博客 1509

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java mock私有方法_java单元测试使用jMockit mock私有方法

2014-02-14 06:30:02阅读( 550 )jMockit简直是万能的,私有方法也可以方便的做Mock。如下是mock私有方法的代码:要测试的类package cn.outofmemory.junit.jmockit;public class MockTarget{private Object privateMethod() {return "Hello Object";}public...

weixin_42516668的博客 5979

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java mock私有方法_java单元测试使用jmockit mock带参数的私有方法

[java]代码库package cn.outofmemory.junit.jmockit;/*** 测试private method mock*/public class MockTarget{public Object privateMethod(String arg) {return "Hello Obkkject " + arg;}public String publicMethod() ...

weixin_42222065的博客 1545

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

单元测试mock框架——jmockit实战

JMockit是google code上面的一个java单元测试mock项目,她很方便地让你对单元测试中的final类,静态方法,构造方法进行mock,功能强大。项目地址在:http://jmockit.org/。详细用法可以在上面找到答案。 JMockit的测试方式可以通过下面2个途径实现 一.根据用例的测试路径,测试代码内部逻辑         对于这种情景,可以使用

nizen的专栏 5万+

Java 单元测试(3)mock进阶 - 静态、final、私有方法mock

mock进阶前言1. powerMock1.1. powerMock官方文档1.2. powerMock demo模拟2. JMockito 前言 上一章讲了Spring-boot的starter test使用mock的方式mockito。但是mockito由于实现方式的原因(动态代理)不能支持静态、final、私有方法的mock。其实还有一种叫native方法,只是一般自己写native方法的地方不多,可能Android系统在这方面使用较多,比如游戏。查询了一些资料与笔者的以往经历,主要使用的有power

fenglllle的博客 1万+

使用JMockit编写java单元测试

之前《有效使用Mock编写java单元测试》一文中层介绍过使用EasyMock和PowerMock来编写java单元测试,今天介绍一个更加强大的工具——JMockit。 引用单元测试中mock的使用及mock神器jmockit实践中的java单元测试中各种Mock框架对比,就能明白JMockit有多么强大: JMockit是基于JavaSE5中的java.lang.instrument

Tony Chen的专栏 4万+

jmockit mock 方法内创建对象的方法调用

测试的过程中,经常会出现的情况是有些

wenhuiqiao的专栏 1万+

java mock私有方法_JMockit Mock 私有方法和私有属性

前面说过 JMockit 因身处前线,所以简直无不可,本节例子演示 JMockit 怎么 Mock 私有方法和私有属性,示例虽然是静态方法和属性,但因采用的是反射手法,所以这种Deencapsulation 的 Mock 手段同样适用于公有的方法或属性,无论是否静态。本文所用 JMockit 版本为 1.6, 可能网上所搜索的方法与此有所不同,请注意 JMockit 版本差异。仍需重复一下,运行...

weixin_35347870的博客 5985

jmockit教程_【原创】如何使用Jmockit进行单元测试

如何使用jmockit进行单元测试1. Jmockit简介JMockit 是用以帮助开发人员编写测试程序的一组工具和API,它完全基于 Java 5 SE 的java.lang.instrument 包开发,内部使用 ASM 库来修改Java的Bytecode。正是由于基于instrument,可以修改字节码。所以这也是它强大的原因。Jmockit可以mock的种类包含了:1. class(ab...

weixin_39828859的博客 2977

java unit test moke_java unit test Mock框架jMockit示例教程 - 私有静态成员Mock

2015-06-20 06:30:01阅读( 296 )有时我们需要在测试mock对象前对某些静态成员变量进行初始化的设值,但是这些静态成员变量往往是私有的,有时某些方法的调用中会间接调用静态私有方法。 如何对这些静态私有变量或者静态私有方法进行mock呢?以下示例将示范这些用法 。package cn.outofmemory.jmockit.target;public class StaticA...

weixin_34369657的博客 1230

Jmockit使用指南

概述 mock对象 这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。

y461517142的专栏 1万+
上一篇: git学习笔记
下一篇: (工作笔记)redis开放远程访问
赤月幼狼
博客等级 码龄10年 20粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤月幼狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值