浏览 2958 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (11)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-13
目标测试代码package jmockit.target; /** * 示例一个公共方法内部调用了一个私有方法;示例私有成员变量的设值。 * * @author Ginge * */ public class InstanceInternalAccess { private int memberCounts; private int getMemberCounts() { return this.memberCounts; } /** * 把传入的count和内部定义的私有int类型的memberCounts的值相加,返回相加的结果。 * * @param count * @return */ public int sumInternalCounts(int count) { int myCount = this.getMemberCounts(); return myCount + count; } }
mock代码package jmockit.sample; import jmockit.target.InstanceInternalAccess; import junit.framework.Assert; import mockit.Expectations; import mockit.Mocked; import org.junit.Test; /** * 有时我们需要在测试mock对象前对某些成员变量进行初始化的设值,但是这些成员变量往往是私有的,有时某些方法的调用中会间接调用私有方法。 * 如何对这些私有变量或者私有方法进行mock呢?以下示例将示范这些用法。 * * @author Ginge * */ public class PrivateAccessTest { private @Mocked InstanceInternalAccess instanceInternalAccess = null; @Test /* * 对mock类型的私有成员变量进行设值的示例 */ public void privateAccessField() { // 注意:这里使用了动态部分mock new Expectations(instanceInternalAccess) { { // 对私有int类型的memberCounts进行设值 this.setField(instanceInternalAccess, "memberCounts", 2); } }; Assert.assertEquals(5, instanceInternalAccess.sumInternalCounts(3)); } @Test /* * 对mock类型的私有成员方法进行mock的示例 */ public void privateAccessMethod() { // 注意:这里使用了动态部分mock new Expectations(instanceInternalAccess) { { // 对私有方法进行mock this.invoke(instanceInternalAccess, "getMemberCounts"); result = 2; } }; Assert.assertEquals(5, instanceInternalAccess.sumInternalCounts(3)); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |