浏览 2470 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (11)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-13
目标测试代码package jmockit.target; public class Constructor { private String memberId; public Constructor(String memberId) { this.memberId = memberId; } public String getRealName() { return "real_" + this.memberId; } }
Mock代码package jmockit.sample; import jmockit.target.Constructor; import junit.framework.Assert; import mockit.Expectations; import mockit.Mock; import mockit.MockUp; import mockit.Mocked; import org.junit.Test; /** * 好了,到此为止,之前所有的mock都是基于行为的mock,以下对构造方法的mock的示例是基于状态的。 * 我认为基于行为的mock是站在目标测试代码外面的角度的,而基于状态的是站在目标测试代码内部的。我们可以对传入的参数进行检查、匹配,才返回某些结果。 * * @author Ginge * */ public class ConstructorTest1 { @Mocked private Constructor constructor = null; @Test public void mockConstructor() { new Expectations() { { // MockUp可以对应一个类或者接口,如果它的子类中有方法被注解了@Mock, // 并且恰好方法的签名又和传入的泛型的类型中某个方法一样,那么对应的方法就被Mock new MockUp<Constructor>() { private String memberId; // $init表示构造方法 @Mock public void $init(String memberId) { this.memberId = "mock_" + memberId; } @Mock public String getRealName() { return this.memberId; } }; } }; //触发构造方法的mock constructor = new Constructor("Constructor"); Assert.assertEquals("mock_Constructor", constructor.getRealName()); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |