对单例进行mock

单例类

public class PmModelHandler {

    // 包含要mock掉的成员变量
private static LogService logger = LogService.getInstance(); private static PmModelHandler instance = new PmModelHandler(); public static PmModelHandler getInstance() {
return instance;
} private PmModelHandler() { } public void method(){
}

测试类

import java.util.Set;

import org.junit.Before;
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 com.zte.LogService; @RunWith(PowerMockRunner.class)
@PrepareForTest({ PmModelHandler.class, LogService.class })
public class ModelUtilTest { private PmModelHandler handler; @Before
public void setUp() throws Exception {
LogService logService = PowerMockito
.mock(LogService.class);
PowerMockito.doNothing().when(logService, "writeLog", anyString());
PowerMockito.mockStatic(LogService.class);
PowerMockito.doReturn(logService).when(LogService.class, "getInstance"); handler = PowerMockito.mock(PmModelHandler.class);
PowerMockito.mockStatic(PmModelHandler.class);
PowerMockito.doReturn(handler).when(PmModelHandler.class, "getInstance");
}

@Test
    public void testMethod() throws Exception {

PowerMockito.doReturn(your obj).when(handler, "methodname", "input");

…………


有时会出现依赖的类无法初始化,而且mock不掉的时候,可使用注解屏蔽掉告警

@SuppressStaticInitializationFor("com.xxx.class")

PowerMock学习笔记,对单例的测试方法的更多相关文章

  1. Java学习笔记之---单例模型

    Java学习笔记之---单例模型 单例模型分为:饿汉式,懒汉式 (一)要点 1.某个类只能有一个实例 2.必须自行创建实例 3.必须自行向整个系统提供这个实例 (二)实现 1.只提供私有的构造方法 2 ...

  2. SpringMVC学习笔记:单例与并发问题

    Spring中的Bean默认都是单例(singleton),Spring中Bean的scope属性有五种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时 ...

  3. Javascript设计模式学习二(单例)

    定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点 普通的单例模式: 使用一个变量来标记当前是否已经为某个类创建过对象,如果是的话,在下一次获取该类的实例时,直接返回之前创建的对象.比如:使用 ...

  4. Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现

    直接上代码: public enum Boss { INSTANCE; private String name; public void doSomeThing() { System.out.prin ...

  5. Java笔记(十一)……单例设计模式

    设计模式 解决某一类问题最行之有效的方法 Java中有23中设计模式 单例设计模式 解决一个类在内存中只存在一个对象 思路 将构造函数私有化 在类中创建一个本类对象 提供一个方法可以获取到对象 两种方 ...

  6. java新手笔记12 单例

    1.单例 package com.yfs.javase; public class Singleton { //private static final Singleton single = new ...

  7. javascript学习(9)——[设计模式]单例

    单例模式,相信大家对此都不陌生,我们主要讲下javascript中几个比较常见的设计模式: (1).普通的单体 (2).具有局部变量的强大单体 (3).惰性单体 (4).分支单体 下面我们就一一进行介 ...

  8. unity3d中设计模式的学习<一>:泛型单例

    单例是游戏开发中比较常见的设计模式,虽然针对的功能不同,但是有一些功能还是共有的,代码也不少,如果能放在一个基类里面是最好不过了,但是单例里需要有个instance功能来返回当前对象,所以这个功能必须 ...

  9. scala学习手记14 - 单例对象

    java中的单例模式都很熟悉了:简单地说就是一个类只能有一个实例.在scala中创建单例对象非常简单,创建类时使用object关键字替换class即可.因为单例类无法初始化,所以不能向它的主构造函数传 ...

随机推荐

  1. Spring注解实现定时功能以及Quartz定时器

    一:Spring注解实现--------->Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz 1:maven配置: <!-- quartz--> <d ...

  2. maven 项目 配置docker镜像生成(dockerfile-maven-plugin)

    插件地址:https://github.com/spotify/dockerfile-maven 依github上备注,只要在项目根上录上编写dockerfile,然后引用插件即可 编写Dockerf ...

  3. vue四、实例

    1.new Vue创建根实例 2.data对象,所有的属性加入到 Vue 响应式系统-值发生改变时,视图自动变更为新值 只有实例被创建时存在的属性才会响应式改变,后增加的不会 vue定义的实例属性和方 ...

  4. 3D电影转2D普通电影,电脑上看

    下了一些电影,打开发现是左右两个一样的画面,什么情况?原来这就是传说中的3D,怎么像正常电影一样的看呢?第一反应去搜3D眼镜,价钱倒是不贵,但是不应急呀,肿么办?以下是观看方法: 一.看电脑上有QQ影 ...

  5. 利用Android studio开发Java工程

    1. 新建项目 新建项目肯定是去new,但到底是new project还是new module是一个问题.在这解释一下,如果new project的话是新建一个工程,相当于新建一个工作区,工程中可以有 ...

  6. nginx FastCGI模块配置

    这个模块允许nginx同FastCGI协同工作,并且控制哪些参数将被安全传递. location / { fastcgi_pass localhost:9000;# 或者http://ip:9000; ...

  7. P3796 【模板】AC自动机

    传送门 AC自动机的模板 简单的理解就是字典树上的KMP 注意数组不要开太大 不然每次memset耗时太多 有一个小优化 每次走 fail 边找匹配时只有一些会更新答案 那么就可以把没用的fail边压 ...

  8. 74th LeetCode Weekly Contest Preimage Size of Factorial Zeroes Function

    Let f(x) be the number of zeroes at the end of x!. (Recall that x! = 1 * 2 * 3 * ... * x, and by con ...

  9. Ubuntu 14.04下MySQL服务器和客户端的安装

    下面进行简单的配置 安装完成后通过修改/etc/mysql/my.cnf(此文件为mysql的配置文件).将文件中的binding-address=127.0.0.1注释掉.其它配置根据需要更改. H ...

  10. idea(2)快捷键

    Ctrl+E:最近编辑文件 Ctrl+J:自动代码快捷 Ctrl+N:查找类 Ctrl+U:大小写转换 Ctrl+F12:outline Alt+1:全屏 Alt+F1:类定位到左侧目录 Alt+In ...