`
liyixing1
  • 浏览: 959041 次
  • 性别: 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框架。

分享到:
评论

相关推荐

    基于python的mock测试数据练习

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

    0积分:Mock对象教程

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

    mock对象介绍

    3. **创建Mock对象**:最后,创建Mock对象并实现同样的接口,用于单元测试。 由于测试代码仅通过接口来引用对象,因此它可以不知道引用的对象是真实对象还是Mock对象。 #### 四、示例分析 以文章提供的例子为例,...

    mock 测试.pptx

    在测试过程中,Mock 对象可以帮助开发者更好地测试单元测试、集成测试和系统测试。下面是 Mock 测试的详细介绍和 Fiddler AutoResponder 面板的使用方法。 什么是 Mock 测试? -------------------- Mock 测试是一...

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

    "Mock counterfeiter" 是一个专为Go语言设计的工具,它的目标是帮助开发者生成自容器且类型安全的测试Mock对象,简化了编写Mock对象的过程,从而提高了测试的效率和准确性。 Mock counterfeiter的工作原理是基于...

    16、使用Mock修复测试代码1

    Mock对象是PHPUnit测试框架中的一种重要工具,用于模拟对象的行为,从而使测试代码更加灵活和可靠。 标题中提到的“使用Mock修复测试代码1”指的是使用Mock对象来修复测试代码的第一个示例。在这个示例中,我们将...

    Unitils教程(介绍Unitils的最佳资料)

    应用 mock 对象测试 ------------------ 在单元测试中,mock 对象是一个非常重要的概念。Unitils 提供了一些实用的工具和方法来帮助我们使用 mock 对象。 例如,我们可以使用 Unitils 的 MockModule 来创建 mock ...

    单元测试与 Mock 方法

    4. 执行测试:运行包含Mock对象的测试代码。 5. 验证结果:使用EasyMock.verify()检查Mock对象的所有预期调用是否都已发生。 除了EasyMock,还有其他类似的库,如Mockito和JMock,它们提供了更高级的功能,如更加...

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

    Mock对象是软件测试中的一种重要工具,用于模拟真实对象的行为,从而在单元测试中隔离被测代码的依赖项。本项目将介绍如何使用Objective-C的测试框架和第三方库来创建和使用Mock对象,并提供一些示例代码。 **适用...

    软件测试(Junit单元测试)汇编.pdf

    本文将详细介绍软件测试(Junit单元测试)的相关知识点,包括Eclipse的使用、JDK的下载和安装、Junit单元测试的使用、数据库开发过程中的Junit使用、使用Junit进行类测试、抽象类测试、Mock对象测试等。 一、 ...

    junit单元测试及Mock应用,超详细的PPT实战应用

    Mock对象可以替代真实对象,模拟返回值或行为,以便测试代码可以专注于单个功能,而不会受到外部因素的影响。这在测试涉及网络请求、数据库操作或其他外部资源的代码时特别有用。Mocking工具如Mockito允许开发者创建...

    百灵报表 dome mock 实例 hibernate spring struts2 struts

    6. **Mock对象测试**:使用Mockito或其他工具创建Mock对象,隔离测试,确保业务逻辑的正确性。 总的来说,这个项目是一个很好的实践平台,可以帮助Java开发者深入理解如何在实际项目中整合这些主流的开源技术,提升...

    dotnet 单元测试 Mock 让一个对象继承多个接口.rar

    首先,Mock对象是在单元测试中用于替代真实依赖的对象,它可以模仿实际对象的行为,但通常只关注某些特定方法的调用。这使得测试更加可控,避免了对其他系统组件的间接依赖。在.NET中,我们可以使用诸如Moq或...

    Mock

    3. **验证Mock行为**:确保Mock对象在测试过程中被正确调用,验证其方法的调用次数、参数和返回值。 4. **保持测试独立**:Mock应当使每个测试独立运行,不受其他测试的影响。 5. **避免Mock静态方法**:静态方法...

    mock学习资料

    9. **集成测试中的Mock**:在集成测试中,Mock对象也可以用来隔离系统中的不同组件,只测试目标组件与其他组件的交互。 10. **Mock的最佳实践**:避免过度Mock,因为这可能导致测试过于脆弱,对代码修改敏感。尽量...

    服务端Mock测试基础原理讲解

    通过使用Mock技术,可以创建一个虚拟的对象,它能够返回期望的数据,从而模拟特定的测试场景。Mock可以应用在客户端测试,也可以用在服务端测试中。 客户端测试中的Mock处理通常可以借助一些抓包工具,如Fiddler、...

    springboot搭建mock

    在测试中,我们用Mock对象来替换那些难以控制或可能引起错误的真实对象,这样可以更专注于测试代码本身的功能,而不是外部依赖。 在SpringBoot中,我们可以利用Mockito库来创建和管理Mock对象。Mockito是一个强大的...

    Mock在Python单元测试中的使用.pdf

    Mock对象是替代真实对象的模拟版本,它可以在测试中代替真实的对象,返回预设的值或行为。在Python的`unittest.mock`库中,我们可以创建和配置Mock对象,以便精确控制它们在测试中的行为。 2. **为什么使用Mock?*...

Global site tag (gtag.js) - Google Analytics