目标测试代码
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模拟静态方法和私有方法的示例代码: ```java import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org....
Mockit资料中的内容可能包括Mockit的基本概念、安装教程、使用方法、实战示例以及常见问题解答等。 一、Mockito概述 Mockito是一款流行的Java单元测试框架,它提供了创建和配置mock对象的能力,这些mock对象可以在...
进行用例实现时,很多情况难以模拟,比如数据库用例,如果直接通过连接数据库进行测试,导致用例对环境依赖很大,这时,可以通过mock技术可以模拟构造数据环境,从而进行单元测试,这里提供有实现示例说明文档。...
PowerMock是一个强大的扩展工具,它可以与Mockito、EasyMock等主流Mock框架结合,允许我们模拟静态方法、构造器、final类和方法、删除静态初始化器等。 标题“使用PowerMock来Mock静态函数”指的是如何利用...
- **基于状态的JMockit测试**: - **方法一:使用@MockClass和 @UsingMocksAndStubs**:介绍如何使用这两个注解来创建mock对象。 - **方法二:使用Mockit.setUpMock()**:另一种创建mock对象的方式。 - **方法三...
使用Mockito,你可以声明一个对象为Mock,然后设置它的行为,比如当调用某个方法时返回特定值或者触发某些动作。下面是一个简单的Mockito示例: ```java import static org.mockito.Mockito.*; // 创建Mock对象 ...
例如,可以使用` FileReader`读取文件内容并构造`FormData`,然后模拟发送请求。 4. **使用Mock工具**: 如`mockjs`或`json-server`,它们可以快速地创建一个模拟的RESTful API服务,包括文件上传接口。只需配置...
对于应用程序代码中的每种方法,此存储库均提供了基于间谍的方法和完整功能/构造函数存根/模拟替换的示例: Date.now() +完整的模拟/存根:请参阅 Date.now() +间谍:请参阅 new Date() +完整的模拟/存根:参见 ...
- **异常场景:** 当需要测试一些特殊或异常情况时,而这些情况在正常情况下难以重现或构造,可以使用Mock来模拟这些特殊情况。 ##### 2.3 Mock的优点与缺点 - **优点:** - **团队可以并行工作:** 不必等待依赖...
在Spring MVC中,我们可以使用以下注解来进行Mock测试: 1. `@RunWith(SpringJUnit4ClassRunner.class)`:指示使用Spring Test组件进行单元测试。 2. `@WebAppConfiguration`:使用此注解会在运行单元测试时启动一...
- gmock基于C++模板元编程,可以为任何类创建模拟对象,无需修改原始代码。 - 模拟对象可以在测试中替代真实对象,提供可控制的行为和期望。 2. **基本概念** - **模拟对象(Mock Object)**:这是gmock中的核心...
例如,我们可能创建一个`Map`对象的模拟,它接受与原生`google.maps.Map`相同的构造函数参数,并提供`setCenter`、`getZoom`等方法,这些方法在测试中可以返回预定义的值或触发预期的事件。 在`google-maps-mock-...
PowerMock 是一个强大的Java单元测试框架,它扩展了其他单元测试库如EasyMock,使得能够对静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器等进行模拟和测试。在传统的单元测试中,这些通常被视为...
2. **Mock Final Classes and Methods**: 最终(final)类和方法也不能被常规方式覆写,但PowerMock可以做到这一点。通过`@RunWith(PowerMockRunner.class)`和`@PrepareForTest`,我们可以模拟final类和方法的行为,...
然而,Mockito基于动态代理,不能Mock私有、静态方法或构造函数,这在某些情况下可能会造成局限。 - PowerMock:作为Mockito的扩展,PowerMock弥补了Mockito的不足,可以Mock静态方法、私有方法甚至构造函数。但是...
Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。 编写自定义的 Mock 对象需要额外的编码工作,同时也可能引入错误。...
在单元测试中,可以使用MockStatic来模拟静态方法,以测试依赖于这些方法的代码。 ### Verifying #### 使用场景 验证是一个重要环节,用于检查方法是否按照预期被调用。 #### 业务代码 在编写业务代码时,为了...
在Python中,可以使用`socket`库来创建和管理Socket对象。 3. **服务器端程序流程**: - **绑定(Bind)**:服务器需要绑定一个特定的IP地址和端口号,以便客户端知道在哪里找到它。 - **监听(Listen)**:...
* 构造方法,传入流程名称 * @param flowName 流程名称 */ public FlowAMock(String flowName){ this.flowName = flowName; } public String getTempState() { return tempState; } public ...