目标测试代码
package jmockit.target;
public class Constructor {
private String memberId;
public Constructor(String memberId) {
this.memberId = memberId;
}
public String getRealName() {
return "real_" + this.memberId;
}
public String getRealInstanceName(String m) {
return "real_m_" + m;
}
}
Mock代码
package jmockit.sample;
import jmockit.target.Constructor;
import junit.framework.Assert;
import mockit.Mock;
import mockit.Mockit;
import org.junit.Test;
/**
* mock实例中it代表实际的mock对象
*
* @author Ginge
*
*/
public class AccessRealInstanceTest {
//注意,这里少了@Mocked
private Constructor constructor = new Constructor("");
@Test
public void mockConstructor() {
// 可以在任意时候把Mock装置起来,不用的时候可以脱下来
Mockit.setUpMock(Constructor.class, new MockedConstructor());
//参数没有匹配到,直接返回了mock
Assert.assertEquals("mock", constructor.getRealInstanceName(""));
//参数匹配到real,返回了实际对象方法调用的结果
Assert.assertEquals("real_m_real", constructor.getRealInstanceName("real"));
}
/**
* MockedConstructor相当于一个标志,具体名称不重要,重要的是它里面被@Mock注解的方法。如果有方法被注解了@Mock,
* 并且恰好方法的签名又和Mockit.setUpMock中声明的类型中的某个方法一样,那么对应的方法就被Mock
* 为了方便才把这个类的声明放到ConstructorTest2里面的,其实这个类可以放到任何地方
*
* @author Ginge
*
*/
public static class MockedConstructor {
//it属性表示实际对象
public Constructor it;
@Mock(reentrant = true)//reentrant表示是否可以访问实际对象
public String getRealInstanceName(String m) {
if ("real".equals(m)) {
return it.getRealInstanceName(m);
} else {
return "mock";
}
}
}
}
分享到:
相关推荐
gmall2020-mock-db-2021-11-14.jar
本项目将介绍如何使用Objective-C的测试框架和第三方库来创建和使用Mock对象,并提供一些示例代码。 **适用人群:** - Objective-C开发者,特别是那些进行单元测试的开发者。 - 对软件测试和单元测试有一定了解,但...
尽管私有方法不能直接被调用,但Jmockit允许我们模拟它们。这通常在需要测试内部逻辑时很有用。使用`@Capturing`注解配合`Deencapsulation`类可以实现: ```java @Test public void testWithMockedPrivateMethod() ...
可以用来Mock JAVA代码中的静态方法
### 使用Mock对象在Java单元测试中的重要性及实践 #### 引言 在软件开发过程中,单元测试作为确保代码质量的重要环节,其有效性往往受到多种因素的影响,尤其是当待测方法依赖于外部资源如网络、数据库或其他复杂...
本文将深入探讨JMockit这一强大的mock框架,它不仅支持模拟私有成员、静态方法,还能自动化地完成mock对象的创建与注入等工作。通过一系列具体示例和概念解析,帮助读者全面掌握JMockit的核心功能及其实现细节。 ##...
用户行为日志生成脚本
现在你可以在测试代码中引入这个mock对象,模拟实际的依赖关系。 6. **编写测试**:使用生成的mock对象编写单元测试。你可以设置mock对象的行为(如返回值或错误),然后在测试中调用这些方法,验证被测试代码的...
JMockit 是一款 Java 语言的测试框架,主要用于模拟(mocking)和验证对象的行为,以便在单元测试中隔离被测试代码。它支持行为和状态的测试,这使得测试更加灵活和全面。以下是对 JMockit 的关键知识点的详细解释:...
这意味着在测试期间,如果Mock对象被错误地调用,编译器将能够捕获到这些问题,而不是在运行时才暴露出来。 "maxbrunsfeld-counterfeiter-f85ca4b" 这个文件名可能表示Mock counterfeiter的某个特定版本或者分支,...
在这个例子中,我们模拟了`DatabaseConnection`类的`getUserData`方法,并设置了它在被调用时返回预设的用户数据,这样就可以在不实际访问数据库的情况下测试`DatabaseAccess`类。 **总结** JMockit 1.2作为一个...
在Vue CLI 3中使用Mock来快速搭建实际项目是一个高效且灵活的方法,它允许前端开发者在后端接口未完成时独立进行开发。Mock服务模仿真实API接口,提供模拟数据,以便前端开发人员能够进行功能测试和界面设计。下面将...
Mock对象是模拟真实对象的一种工具,它可以在测试中替代真实的对象,以避免测试过程中对实际数据或外部服务的依赖。Mock对象可以记录调用,返回预设的值,甚至可以验证是否被正确调用。 二、Mock的创建与使用 1. `...
下面是 Mock 测试的详细介绍和 Fiddler AutoResponder 面板的使用方法。 什么是 Mock 测试? -------------------- Mock 测试是一种软件测试方法,旨在模拟一些难以构造或获取的对象,以便进行测试。在测试过程中...
然后,我们调用`userService.findUserById()`方法,并使用`verify()`来检查`userRepository.findById()`是否被正确调用。最后,我们验证返回的`Optional<User>`是否与预期一致。 Mockito还提供了丰富的API,如`then...
jmockit-1.7.jar JMockit最新工具包
1. **避免过度依赖**:mock服务是为了加速开发,但不能替代实际的后端接口测试,确保在项目后期与真实接口进行对接和测试。 2. **版本管理**:随着项目的迭代,mock数据也需要同步更新,保持与后端接口的一致性。 3....
总的来说,mock-xhr库为前端开发者提供了一种高效且灵活的手段,可以在离线环境中对使用AJAX的代码进行充分的测试,确保代码质量,提高开发效率。通过熟练掌握并应用这个库,开发者可以更好地应对各种复杂的前端应用...