用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

jMockit私有静态成员Mock

2015-02-08 作者: java源代码大全举报

[java]代码库

package cn.outofmemory.jmockit.sample;  

import jmockit.target.StaticAccess;  
import junit.framework.Assert;  
import mockit.Expectations;  

import org.junit.Test;  

/** 
 * 有时我们需要在测试mock对象前对某些静态成员变量进行初始化的设值,但是这些静态成员变量往往是私有的,有时某些方法的调用中会间接调用静态私有方法。 
 * 如何对这些静态私有变量或者静态私有方法进行mock呢?以下示例将示范这些用法 
 *  
 * @author Ginge 
 *  
 */  
public class StaticAccessTest {  

    @Test  
    /* 
     * 对mock类型的静态私有成员变量进行设值的示例 
     */  
    public void privateAccessField() {  
        // 注意:这里使用了动态部分mock  
        new Expectations(StaticAccess.class) {  
            {  
                // 对私有int类型的memberCounts进行设值  
                this.setField(StaticAccess.class, "memberCounts", 2);  
            }  
        };  

        Assert.assertEquals(5, StaticAccess.sumInternalCounts(3));  
    }  

    @Test  
    /* 
     * 对mock类型的静态私有成员方法进行mock的示例 
     */  
    public void privateAccessMethod() {  
        // 注意:这里使用了动态部分mock  
        new Expectations(StaticAccess.class) {  
            {  
                // 对私有方法进行mock  
                this.invoke(StaticAccess.class, "getMemberCounts");  
                result = 2;  
            }  
        };  

        Assert.assertEquals(5, StaticAccess.sumInternalCounts(3));  
    }  

    @Test  
    /* 
     * 直接对整个静态方法进行mock 
     */  
    public void staticAccessMethod() {  
        // 注意:这里使用了动态部分mock  
        new Expectations(StaticAccess.class) {  
            {  
                StaticAccess.sumInternalCounts(3);  
                result = 7;  
            }  
        };  

        Assert.assertEquals(7, StaticAccess.sumInternalCounts(3));  
    }  
}  
//源代码片段来自云代码http://yuncode.net
			


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...