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

jmockit 的使用示例-11不是吧,还能访问实际被Mock的对象?

 
阅读更多

目标测试代码

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

    gmall2020-mock-db-2021-11-14.jar

    Object-CMock objects for Objective-C在Objective-C中使用Mock对象的实践

    本项目将介绍如何使用Objective-C的测试框架和第三方库来创建和使用Mock对象,并提供一些示例代码。 **适用人群:** - Objective-C开发者,特别是那些进行单元测试的开发者。 - 对软件测试和单元测试有一定了解,但...

    Jmockit用法示例

    尽管私有方法不能直接被调用,但Jmockit允许我们模拟它们。这通常在需要测试内部逻辑时很有用。使用`@Capturing`注解配合`Deencapsulation`类可以实现: ```java @Test public void testWithMockedPrivateMethod() ...

    JMOCKIT mock 静态方法 单元测试

    可以用来Mock JAVA代码中的静态方法

    0积分:Mock对象教程

    ### 使用Mock对象在Java单元测试中的重要性及实践 #### 引言 在软件开发过程中,单元测试作为确保代码质量的重要环节,其有效性往往受到多种因素的影响,尤其是当待测方法依赖于外部资源如网络、数据库或其他复杂...

    JMockit学习分享

    本文将深入探讨JMockit这一强大的mock框架,它不仅支持模拟私有成员、静态方法,还能自动化地完成mock对象的创建与注入等工作。通过一系列具体示例和概念解析,帮助读者全面掌握JMockit的核心功能及其实现细节。 ##...

    gmall2020-mock-log-2020-04-01.jar

    用户行为日志生成脚本

    Go-goautomock使用gogenerate从接口自动生成mock

    现在你可以在测试代码中引入这个mock对象,模拟实际的依赖关系。 6. **编写测试**:使用生成的mock对象编写单元测试。你可以设置mock对象的行为(如返回值或错误),然后在测试中调用这些方法,验证被测试代码的...

    jmockit总结

    JMockit 是一款 Java 语言的测试框架,主要用于模拟(mocking)和验证对象的行为,以便在单元测试中隔离被测试代码。它支持行为和状态的测试,这使得测试更加灵活和全面。以下是对 JMockit 的关键知识点的详细解释:...

    Go-Mockcounterfeiter-一个工具用于在Go中生成自容器类型安全的测试Mock对象

    这意味着在测试期间,如果Mock对象被错误地调用,编译器将能够捕获到这些问题,而不是在运行时才暴露出来。 "maxbrunsfeld-counterfeiter-f85ca4b" 这个文件名可能表示Mock counterfeiter的某个特定版本或者分支,...

    jmockit-1.2

    在这个例子中,我们模拟了`DatabaseConnection`类的`getUserData`方法,并设置了它在被调用时返回预设的用户数据,这样就可以在不实际访问数据库的情况下测试`DatabaseAccess`类。 **总结** JMockit 1.2作为一个...

    vue-cli3中使用mock(实际项目中快速搭建)

    在Vue CLI 3中使用Mock来快速搭建实际项目是一个高效且灵活的方法,它允许前端开发者在后端接口未完成时独立进行开发。Mock服务模仿真实API接口,提供模拟数据,以便前端开发人员能够进行功能测试和界面设计。下面将...

    基于python的mock测试数据练习

    Mock对象是模拟真实对象的一种工具,它可以在测试中替代真实的对象,以避免测试过程中对实际数据或外部服务的依赖。Mock对象可以记录调用,返回预设的值,甚至可以验证是否被正确调用。 二、Mock的创建与使用 1. `...

    mock 测试.pptx

    下面是 Mock 测试的详细介绍和 Fiddler AutoResponder 面板的使用方法。 什么是 Mock 测试? -------------------- Mock 测试是一种软件测试方法,旨在模拟一些难以构造或获取的对象,以便进行测试。在测试过程中...

    springboot + mockito 使用示例代码-原创

    然后,我们调用`userService.findUserById()`方法,并使用`verify()`来检查`userRepository.findById()`是否被正确调用。最后,我们验证返回的`Optional<User>`是否与预期一致。 Mockito还提供了丰富的API,如`then...

    jmockit-1.7.jar

    jmockit-1.7.jar JMockit最新工具包

    xe-ajax-mock1.4.5.js

    1. **避免过度依赖**:mock服务是为了加速开发,但不能替代实际的后端接口测试,确保在项目后期与真实接口进行对接和测试。 2. **版本管理**:随着项目的迭代,mock数据也需要同步更新,保持与后端接口的一致性。 3....

    前端开源库-mock-xhr

    总的来说,mock-xhr库为前端开发者提供了一种高效且灵活的手段,可以在离线环境中对使用AJAX的代码进行充分的测试,确保代码质量,提高开发效率。通过熟练掌握并应用这个库,开发者可以更好地应对各种复杂的前端应用...

Global site tag (gtag.js) - Google Analytics