`
liyixing1
  • 浏览: 940489 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

mock对象测试

 
阅读更多
package mock;

public class Account {
private String accountId;
private long balance;

public Account(String accountId, long initialBalance) {
this.accountId = accountId;
this.balance = initialBalance;
}

public String getAccountId() {
return accountId;
}

public void setAccountId(String accountId) {
this.accountId = accountId;
}

public void setBalance(long balance) {
this.balance = balance;
}

public void debit(long amount) {
this.balance -= amount;
}

public void credit(long amount) {
this.balance += amount;
}

public long getBalance() {
return this.balance;
}
}



package mock;

public interface AccountManager {
public Account findAccountForUser(String userId);

public void updateAccount(Account account);
}


package mock;

public class AccountService {
private AccountManager accountManager;

public void setAccountManager(AccountManager manager) {
this.accountManager = manager;
}

public void transfer(String senderId, String beneficiaryId, long amount) {
Account sender = this.accountManager.findAccountForUser(senderId);
Account beneficiary = this.accountManager
.findAccountForUser(beneficiaryId);
sender.debit(amount);
beneficiary.credit(amount);
this.accountManager.updateAccount(sender);
this.accountManager.updateAccount(beneficiary);
}
}

为了而是transfer,所以必须要有一个数据访问层对象,而我们还没完成这个类的编写,这个时候就mock一个数据访问层对象。

package mock;

import java.util.HashMap;
import java.util.Map;

public class MockAccountManager implements AccountManager {
private Map<String, Account> accounts = new HashMap<String, Account>();

public void addAccount(String userId, Account account) {
this.accounts.put(userId, account);
}

public Account findAccountForUser(String userId) {
return this.accounts.get(userId);
}

public void updateAccount(Account account) {

}
}



package mock;

import org.junit.Assert;
import org.junit.Test;

public class TestAccountService {
@Test
public void testTransferOk() {
MockAccountManager mockAccountManager = new MockAccountManager();
Account senderAccount = new Account("1", 200);
Account beneficiaryAccount = new Account("2", 100);
mockAccountManager.addAccount("1", senderAccount);
mockAccountManager.addAccount("2", beneficiaryAccount);
AccountService accountService = new AccountService();
accountService.setAccountManager(mockAccountManager);
accountService.transfer("1", "2", 50);
Assert.assertEquals(150, senderAccount.getBalance());
Assert.assertEquals(150, beneficiaryAccount.getBalance());
}
}
//当然这里更好的做法是mock的数据从外部文件或者xml等读入。








EasyMock是一个mock框架。

分享到:
评论

相关推荐

    Mock模拟测试使用

    Mock模拟测试,定义、好处、关键点、Mockito使用、Mock 对象的行为验证、Spy 对象验证等

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

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

    使用配置文件定义Mock对象,创建高效、灵活的测试用例

    结论下载参考资料本文主要讨论如何利用配置文件对Mock对象以及它的行为进行描述,从而分离测试数据和代码,创建高效、灵活的测试用例。同时,本文给出了一套基于开源项目EasyMock的实现,并通过一个示例来说明如何...

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

    在java web应用中,进行用例实现时,很多情况难以模拟...它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。

    StrutsTest

    它也是属于使用Mock对象测试,但是与EasyMock不同的是,EasyMock是提供了创建Mock对象的API,而StrutsTest则是专门负责测试Struts应用程序的Mock对象测试框架。除了容器外测试,StrutsTest也可以很方便的用容器内的...

    模拟测试辅助工具easyMock.zip

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...

    用gomock进行mock测试的方法示例

    在开发过程中往往需要配合单元测试,但是很多时候,单元测试需要依赖...mock对象就是为了解决上面的问题而诞生的,mock(模拟)对象能够模拟实际依赖对象的功能,同时又不需要非常复杂的准备工作,你需要做的,仅仅就是

    mockito源码 供java同学学习,用于在自动化单元测试中创建测试对象,为TDD或BDD提供支持

    其主要功能是创建和配置Mock对象,以简化存在外部依赖的类的测试。通过使用Mockito,我们可以虚拟出一个外部依赖,这样可以降低测试组件之间的耦合度,使得我们能更专注于代码的流程和结果,从而更好地实现测试目的...

    基于模拟对象MockObject的单元测试研究.pdf

    不错的文档,提供给科研人员

    Python mock的基本使用介绍.md

    Python mock的基本使用介绍。Mock即模拟的意思。在Python中,提供了基于单元测试的Mock模块,它的主要作用是使用mock对象替代掉指定的Python对象,以达到模拟对象功能的行为。

    easymock-4.2.jar

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂...

    Google_Mock_启蒙篇.pdf

    Google_Mock_启蒙篇 当你写一个原型戒是测试的时候,直接去依赖真实的对象通常是丌可行的戒是丌明智的。 Mock 对象实现不真实对象有着相同的接口,但你可以去指定 Mock 对象在运行时它做什么

    转:google mock C++单元测试框架-奋飞的菜鸟-ChinaUnix博客1

    引入你要用到的GoogleMock名称.除宏或其它特别提到的之外所有GoogleMock名称都位于*testing*命名空间之下.建立模拟对象(Mock Obj

    easymock-4.0-bundle

    它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使...

    easymock的使用,含demo

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。 ...

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

    4.2.4 使用it来访问mock对象本身 4.3 基于行为的jmockit测试 4.3.1 Mock对象 4.3.2 mockit.Expectations 4.3.3 声明和使用mock对象 4.4 Mock对象的约束 4.4.1 调用次数约束 4.4.2 参数约束 4.4.3 返回值的指定 4.5 ...

    使用PythonMock类进行单元测试

    数据类型、模型或节点——这些都只是mock对象可承担的角色。但mock在单元测试中扮演一个什么角色呢?有时,你需要为单元测试的初始设置准备一些“其他”的代码资源。但这些资源兴许会不可用,不稳定,或者是使用起来...

    spring-mock-2.0-rc3.jar

    Spring针对J2EE的常用Web接口提供了Mock,这些组件被发布于spring-mock.jar,介绍如下: MockHttpServletRequest:HttpServletRequest接口...说明:在提供关于Controller(控制器)的测试时,以上这些对象是最常用的。

Global site tag (gtag.js) - Google Analytics