首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用PowerMockito如何阻止静态代码块的运行

使用PowerMockito如何阻止静态代码块的运行一、前言在我进行单元测试mock静态类的时候,突然出现了这个异常我就很懵逼啊,无奈只能一步一步的进去查找问题结果发现问题出现在静态类当中,那是肯定的,...我是mock了这个使用到静态方法的地方才报错的二、简易代码复现首先,是我们的静态类package com.banmoon.utils;​import cn.hutool.core.util.RandomUtil...;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.InjectMocks;import org.powermock.api.mockito.PowerMockito...但它在正常的容器下运行就是正常且必须的那么我们就得想办法绕过去了,正好PowerMockito提供了一个注解,可以帮助我们取消静态代码块的执行@SuppressStaticInitializationFor...com.banmoon.utils.PowerMockitoUtil;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith

27910

junit4整合PowerMockito进行单元测试

junit4整合PowerMockito进行单元测试 一、介绍 在单元测试中,代码里面往往有一些需要连接数据库、调用第三方远程的代码。 由于没有环境,这些代码的存在,会给单元测试造成影响。...所以我们在单测中,往往会使用mock的方式对这些代码做一个数据的模拟,从而达到对代码进行测试的一个目的。...本文使用的是PowerMockito,它是由Mockito的基础上开发而来,语法规则基本一致,同时也有一些自己的增强,可以对静态方法,局部变量进行mock。...首先,先导入依赖,根据自己的需要进行删减使用 <!...所以我们一般有两种方式 这个方法做了设置某个对象的属性,我们可以校验对象属性是否符合预期 如第二章的初步使用就是如此 如果这个方法执行了某段逻辑分支的代码,我们可以可以校验那段代码是否执行过

1.2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    代码整洁之道-读书笔记之单元测试

    ,直接使用无测试的代码,风险高所以测试代码和生产代码一样重要。...;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.InjectMocks;import org.mockito.Mock...;import org.mockito.MockitoAnnotations;import org.powermock.api.mockito.PowerMockito;import org.powermock.modules.junit4...;import static org.powermock.api.mockito.PowerMockito.when;@RunWith(PowerMockRunner.class)public class...测试遵循的5条规则快速:测试代码应该执行快,以便于频繁的执行测试独立:测试和测试之间应该相互独立,不能一个测试作为另一个测试的条件,每一个测试都是可以独立运行的可重复:测试应该是可以重复执行的,而且获的结果是一致的自足验证

    61620

    使用PowerMock进行单元测试

    PowerMock还包含一些实用程序,可让您更轻松地访问对象的内部状态。 举个例子,你在使用Junit进行单元测试时,并不想让测试数据进入数据库,怎么办?...重要注解说明 @RunWith(PowerMockRunner.class) // 告诉JUnit使用PowerMockRunner进行测试 @PrepareForTest({RandomUtil.class...使用示例 4.1 模拟接口返回 首先对接口进行mock,然后录制相关行为 InterfaceToMock mock = Powermockito.mock(InterfaceToMock.class)...4.7 使用spy方法避免执行被测类中的成员函数 如被测试类为:TargetClass,想要屏蔽的方法为targetMethod. 1) PowerMockito.spy(TargetClass.class...密码不可见 访问测试-多个级别 更改密码 错误消息不应泄露任何系统信息 检查是否正确部署了SSL 检查是否应用了锁定规则 检查密码是否以明码或加密方式保存 使用有效的UserId和无效的UserId验证应用程序

    3.5K30

    #Android单元测试学习总结「建议收藏」

    使用@InjectMocks自动注入依赖对象 三、PowerMockito框架使用 1. 普通Mock的方式 2. Mock方法内部new出来的对象 3. Mock普通对象的final方法 4....Mock系统的final静态类 四、Robolectric测试框架的使用 五、Espresso测试框架的使用 Android单元测试主要分为以下两种 本地单元测试(Junit Test), 本地单元测试是纯...更多可以参考Junit官网:https://junit.org/junit4/ 1....然后在每个测试方法中编写测试用例,这里使用org.junit.Assert包中的断言方法,有很多assertXXX方法,可以自己选择用来判断目标方法的结果是否满足预期。 2....super T> matcher) 断言actual和matcher规则匹配,否则抛出异常携带指定的reason信息 其中assertEquals的方法,都对应有一个assertNotEquals方法

    5.1K20

    PowerMock(一):PowerMock的使用

    本文主要介绍PowerMock的基本使用。...其中最重要的一环就是使用单元测试。单元测试是保证代码质量的一个重要手段,通过单元测试我们可以快速的测试代码的各个分支,各种场景,代码重构时只需要重新跑下单元测试就是能知道代码潜在的问题。...PowerMock的使用 环境 软件 版本 junit 4.13 powermock 2.0.7 引入依赖 2.0.7...--powermock结束--> 这里引入了是三个依赖,junit依赖如果项目中已有的话,则不需要重复引入,需要注意的是JUnit 4.4及以上版本的JUnit需要引入2.0.x 版本以上的 powermock...需要特别注意的是一个方法中只要有一个参数使用了模糊匹配,其余的参数也都需要使用模糊匹配。 mock静态方法 对静态方法的mock也比较简单,与普通方法的mock相比只是多了一行代码。

    7.9K71

    使用PowerMockito如何对私有方法进行单元测试

    使用PowerMockito如何对私有方法进行单元测试一、介绍在上一篇文章中,讲解了公共方法调用私有方法的测试,我们只想对公共方法进行验证测试,私有方法进行mock即可那么在本篇中,如何对私有方法进行单元测试呢...二、代码需要测试的类与私有方法,仅贴出关键代码,实体类什么的就没必要贴了package com.banmoon.service.impl;​import com.banmoon.mapper.PowerMockitoMapper...;import org.junit.runner.RunWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.powermock.api.mockito.PowerMockito...;import org.powermock.modules.junit4.PowerMockRunner;​import java.lang.reflect.InvocationTargetException...正所谓,遇事不决,反射解决3)最后后面找找有没有更加好用的工具类来完成这种单元测试。

    60920

    Powermock系列之-01 Powermock与Thead.sleep

    示例程序如下: import org.junit.Rule; import org.junit.Test; import org.mockito.Mockito; import org.powermock.core.classloader.annotations.PrepareForTest...; import org.powermock.modules.junit4.rule.PowerMockRule; import static org.powermock.api.mockito.PowerMockito.spy...; import static org.powermock.api.mockito.PowerMockito.doThrow; import static org.junit.Assert.assertEquals...得益于Powermockito对于静态方法进行Mock的能力,使用如下格式,就实现了预期的调用Thread.sleep时抛出中断异常的行为,从而实现了大大缩短程序执行时间的目标。...,需要在测试类上加上一下注解, @PrepareForTest( { SystemClass.class}) 并且使用Powermockito.spy这个方法来部分mock Thread这个类。

    2.4K20

    Android开发之逻辑单元测试

    纯代码逻辑的单元测试,也就是Java单元测试,在test目录下 目前我们项目中用junit + powermock这一套单元测试框架,选择powermock的一个重要的原因就是:现如今比较流行的Mock...class HeartStateContextTest { // ... } 如果需要mock对象中的private,final,static,native方法或者final class,使用PowerMockito.whenNew...s1的时候,whenNew就会强行把s1替换成我们mock的对象syncInformHandler,然后就能够对s1对象使用各种mock方法了,为什么要这么玩?...总感觉多次一举,直接使用mock对象不就好了?...程序来说,很多时候代码里面可能会有android的一些相关的类,接口等,但是在JUnit环境下,是没有这些环境的,例如说Context,任何运行到android类的地方都会直接崩溃,这时候需要把这些类或者方法

    1.4K10

    Mockito和PowerMock用法

    在单元测试中,我们往往想去独立地去测一个类中的某个方法,但是这个类可不是独立的,它会去调用一些其它类的方法和service,这也就导致了以下两个问题:外部服务可能无法在单元测试的环境中正常工作,因为它们可能需要访问数据库或者使用一些其它的外部系统...遇到这样情况时,你可以在你能访问的地方使用MockService替代,模拟实现获取数据。...PowerMock基于Mockito开发,起语法规则与Mockito一致,主要区别在于使用方面,以实现完成对private/static/final等方法(也支持mock的对象是在方法内部new出来的...具体事例如下: 依赖 org.powermock powermock-module-junit4使用PowerMock强大功能(Mock静态、final、私有方法等)的时候,就需要加注解@PrepareForTest。

    3.2K32

    Java 数据分批调用接口的正确姿势

    一、背景 现实业务开发中,通常为了避免超时、对方接口限制等原因需要对支持批量的接口的数据分批调用。...; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock...2 实际使用时可以结合apollo配置, 灵活设置每批执行的数量,如果超时随时调整 3 用到的类库 集合工具类: commons-collections4、guava (可以不用) 这里的list划分子...list也可以使用stream的 skip ,limit特性自己去做,集合判空也可以不借助collectionutils....构造数据:easy-random 单元测试框架: Junit4 、 powermockito、mockito 4 大家可以加一些更强大的功能,如允许设置每次调用的时间间隔、并行或并发调用等。

    2K20

    powermockito教程_SpringBoot使用Powermockito单元测试

    mockito框架上手非常简单,但是它也有弊端和局限性,不能mock静态方法、私有方法、构造方法等,但powermockito框架很好的弥补了这一缺陷。...版本说明 一般powermockito和mockito配合来使用,有相应的版本要求。...框架就无能为力了,因为它并不能mock静态方法,所以需要配合powermockito框架来使用,如下: 被测试方法 /** * mock静态方法 isTrue */ @GetMapping(value...什么时候使用?跟静态方法的使用场景一样。...mockito使用继承的方式实现mock的,用CGLIB生成mock对象代替真实的对象进行执行,为了mock实例的方法,你可以在子类中覆盖它,而static方法是不能被子类覆盖的,所以mockito不能

    1.8K20
    领券