浏览 3037 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (11)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-13
目标测试代码package jmockit.target; public class StaticAccess { private static int memberCounts; private static int getMemberCounts() { return memberCounts; } /** * 把传入的count和内部定义的私有int类型的memberCounts的值相加,返回相加的结果。 * * @param count * @return */ public static int sumInternalCounts(int count) { int myCount = getMemberCounts(); return myCount + count; } }
Mock代码package 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)); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |