`
ginge
  • 浏览: 208389 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jmockit 的使用示例-09构造方法也可以Mock?基于状态的Mock?

阅读更多

目标测试代码

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());

	}
}

 

分享到:
评论

相关推荐

    【mock】打桩说明文档及Jar包

    进行用例实现时,很多情况难以模拟,比如数据库用例,如果直接通过连接数据库进行测试,导致用例对环境依赖很大,这时,可以通过mock技术可以模拟构造数据环境,从而进行单元测试,这里提供有实现示例说明文档。...

    Step By Step写测试(书签版).pdf

    4.2 基于状态的jmockit测试 4.2.1 方法一:使用@MockClass和 @UsingMocksAndStubs 4.2.2 方法二:使用Mockit.setUpMock() 4.2.3 方法三:In-line mock classes 4.2.4 使用it来访问mock对象本身 4.3 基于行为的...

    MockNewsNStatics:使用Mockito静态和构造函数调用进行测试的其他方法

    模拟新闻NStatics 如何将Mockito与构造函数和静态函数一起使用的示例

    jest-mock-date-examples:在Jest测试中模拟日期的不同方法

    对于应用程序代码中的每种方法,此存储库均提供了基于间谍的方法和完整功能/构造函数存根/模拟替换的示例: Date.now() +完整的模拟/存根:请参阅 Date.now() +间谍:请参阅 new Date() +完整的模拟/存根:参见 ...

    easymock的使用,含demo

    Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。 编写自定义的 Mock 对象需要额外的编码工作,同时也可能引入错误。...

    备忘录模式 和状态模式.

    * 构造方法,传入流程名称 * @param flowName 流程名称 */ public FlowAMock(String flowName){ this.flowName = flowName; } public String getTempState() { return tempState; } public ...

    Spring中文帮助文档

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    Spring API

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    Grails权威指南

     7.7 使用chain方法构造模型(model)  7.8 显示响应(response)  7.8.1 显示文本  7.8.2 显示指定的视图  7.8.3 显示标记(markup)  7.9 拦截操作  7.9.1 before通知  7.9.2 after...

    精通AngularJS part1

    构造级与实例级方法97 $resource创建异步方法100 $resource服务的限制101 使用$http自定义REST适配器101 35使用$http的高级特性104 截取响应104 36测试与$http交互的代码106 37小结108 第4章显示与格式化...

    ZendFramework中文文档

    14.1.3. 使用静态 get() 方法 14.2. 标准过滤器类 14.2.1. Alnum 14.2.2. Alpha 14.2.3. BaseName 14.2.4. Digits 14.2.5. Dir 14.2.6. HtmlEntities 14.2.7. Int 14.2.8. RealPath 14.2.9. StringToLower...

Global site tag (gtag.js) - Google Analytics