`
ginge
  • 浏览: 212609 次
  • 性别: 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());

	}
}

 

分享到:
评论

相关推荐

    利用PowerMock模拟静态方法和私有方法的示例

    下面是一段使用PowerMock模拟静态方法和私有方法的示例代码: ```java import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org....

    Mockit资料,自用

    Mockit资料中的内容可能包括Mockit的基本概念、安装教程、使用方法、实战示例以及常见问题解答等。 一、Mockito概述 Mockito是一款流行的Java单元测试框架,它提供了创建和配置mock对象的能力,这些mock对象可以在...

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

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

    使用PowerMock来Mock静态函数

    PowerMock是一个强大的扩展工具,它可以与Mockito、EasyMock等主流Mock框架结合,允许我们模拟静态方法、构造器、final类和方法、删除静态初始化器等。 标题“使用PowerMock来Mock静态函数”指的是如何利用...

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

    - **基于状态的JMockit测试**: - **方法一:使用@MockClass和 @UsingMocksAndStubs**:介绍如何使用这两个注解来创建mock对象。 - **方法二:使用Mockit.setUpMock()**:另一种创建mock对象的方式。 - **方法三...

    mock学习交流

    使用Mockito,你可以声明一个对象为Mock,然后设置它的行为,比如当调用某个方法时返回特定值或者触发某些动作。下面是一个简单的Mockito示例: ```java import static org.mockito.Mockito.*; // 创建Mock对象 ...

    文件上传的两种情况及mock时对应处理办法

    例如,可以使用` FileReader`读取文件内容并构造`FormData`,然后模拟发送请求。 4. **使用Mock工具**: 如`mockjs`或`json-server`,它们可以快速地创建一个模拟的RESTful API服务,包括文件上传接口。只需配置...

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

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

    moco 模拟接口内容讲解

    - **异常场景:** 当需要测试一些特殊或异常情况时,而这些情况在正常情况下难以重现或构造,可以使用Mock来模拟这些特殊情况。 ##### 2.3 Mock的优点与缺点 - **优点:** - **团队可以并行工作:** 不必等待依赖...

    详解Spring MVC如何测试Controller(使用springmvc mock测试)

    在Spring MVC中,我们可以使用以下注解来进行Mock测试: 1. `@RunWith(SpringJUnit4ClassRunner.class)`:指示使用Spring Test组件进行单元测试。 2. `@WebAppConfiguration`:使用此注解会在运行单元测试时启动一...

    gmock相关资料和笔记

    - gmock基于C++模板元编程,可以为任何类创建模拟对象,无需修改原始代码。 - 模拟对象可以在测试中替代真实对象,提供可控制的行为和期望。 2. **基本概念** - **模拟对象(Mock Object)**:这是gmock中的核心...

    google-maps-mock:模拟Google Maps JS库以进行Jasmine测试angular-google-maps

    例如,我们可能创建一个`Map`对象的模拟,它接受与原生`google.maps.Map`相同的构造函数参数,并提供`setCenter`、`getZoom`等方法,这些方法在测试中可以返回预定义的值或触发预期的事件。 在`google-maps-mock-...

    powermock单元测试

    PowerMock 是一个强大的Java单元测试框架,它扩展了其他单元测试库如EasyMock,使得能够对静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器等进行模拟和测试。在传统的单元测试中,这些通常被视为...

    powerMock的测试样例集合

    2. **Mock Final Classes and Methods**: 最终(final)类和方法也不能被常规方式覆写,但PowerMock可以做到这一点。通过`@RunWith(PowerMockRunner.class)`和`@PrepareForTest`,我们可以模拟final类和方法的行为,...

    2.集成测试实战1

    然而,Mockito基于动态代理,不能Mock私有、静态方法或构造函数,这在某些情况下可能会造成局限。 - PowerMock:作为Mockito的扩展,PowerMock弥补了Mockito的不足,可以Mock静态方法、私有方法甚至构造函数。但是...

    easymock的使用,含demo

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

    PowerMock实战手册.pdf

    在单元测试中,可以使用MockStatic来模拟静态方法,以测试依赖于这些方法的代码。 ### Verifying #### 使用场景 验证是一个重要环节,用于检查方法是否按照预期被调用。 #### 业务代码 在编写业务代码时,为了...

    模拟http服务器(socket使用)

    在Python中,可以使用`socket`库来创建和管理Socket对象。 3. **服务器端程序流程**: - **绑定(Bind)**:服务器需要绑定一个特定的IP地址和端口号,以便客户端知道在哪里找到它。 - **监听(Listen)**:...

    备忘录模式 和状态模式.

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

Global site tag (gtag.js) - Google Analytics