- 浏览: 959041 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
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框架。
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框架。
发表评论
-
DEBUG -- CLOSE BY CLIENT STACK TRACE
2011-10-20 10:28 27638在单元测试测试环境下主要参数两个错误信息: 1.java.la ... -
奇怪的乱码
2011-10-20 00:14 1374通过ant运行build,然后启动测试。测试的时候有log4j ... -
依赖外部资源时解决方案-----存根
2011-10-17 22:08 1458package stubbing; import java. ... -
cobertura做测试覆盖率 ant的配置
2011-09-25 23:05 7478cobertura原理大致如下: 首先修改我们编译后的clas ... -
软件测试的种类
2011-09-18 17:58 1153acceptance test 验收测试 你的程序满足了客户的 ... -
hamcrest
2011-09-18 16:51 1209在一个测试用例中,有时候不得不存在多个断言,比如 @Test ... -
@Ignore 指定跳过测试用例
2011-09-18 16:06 1750在3.x版本中,如果我们不想启动某些测试,需要将方法名更改为非 ... -
@Test
2011-09-17 23:27 8101@Test注解是测试的基础,它提供了其他作用 1.指定将会抛 ... -
测试规范
2011-09-16 00:27 1008测试方法名一般有两种 testxxxx xxxx是要测试的域 ... -
@Before, @BeforeClass, @After, @AfterClass
2011-09-15 23:30 7819@Before, @BeforeClass, @After, ... -
Suite runner
2011-09-14 23:29 1147套件运行器 它可以运行多个测试。 package test; ... -
@Parameters Parameterized runner
2011-09-14 22:46 1623先看一个例子 package te ... -
junit的核心对象
2011-09-12 21:52 1182概念责任Assert不同条件的断言。如果成功,无什么特殊的信息 ... -
基础知识
2011-09-12 20:01 932注解 @Before, @BeforeClass, @Afte ... -
junit网址
2011-08-31 16:29 1018http://junit.sourceforge.net/ h ...
相关推荐
Mock对象是模拟真实对象的一种工具,它可以在测试中替代真实的对象,以避免测试过程中对实际数据或外部服务的依赖。Mock对象可以记录调用,返回预设的值,甚至可以验证是否被正确调用。 二、Mock的创建与使用 1. `...
### 使用Mock对象在Java单元测试中的重要性及实践 #### 引言 在软件开发过程中,单元测试作为确保代码质量的重要环节,其有效性往往受到多种因素的影响,尤其是当待测方法依赖于外部资源如网络、数据库或其他复杂...
3. **创建Mock对象**:最后,创建Mock对象并实现同样的接口,用于单元测试。 由于测试代码仅通过接口来引用对象,因此它可以不知道引用的对象是真实对象还是Mock对象。 #### 四、示例分析 以文章提供的例子为例,...
在测试过程中,Mock 对象可以帮助开发者更好地测试单元测试、集成测试和系统测试。下面是 Mock 测试的详细介绍和 Fiddler AutoResponder 面板的使用方法。 什么是 Mock 测试? -------------------- Mock 测试是一...
"Mock counterfeiter" 是一个专为Go语言设计的工具,它的目标是帮助开发者生成自容器且类型安全的测试Mock对象,简化了编写Mock对象的过程,从而提高了测试的效率和准确性。 Mock counterfeiter的工作原理是基于...
Mock对象是PHPUnit测试框架中的一种重要工具,用于模拟对象的行为,从而使测试代码更加灵活和可靠。 标题中提到的“使用Mock修复测试代码1”指的是使用Mock对象来修复测试代码的第一个示例。在这个示例中,我们将...
应用 mock 对象测试 ------------------ 在单元测试中,mock 对象是一个非常重要的概念。Unitils 提供了一些实用的工具和方法来帮助我们使用 mock 对象。 例如,我们可以使用 Unitils 的 MockModule 来创建 mock ...
4. 执行测试:运行包含Mock对象的测试代码。 5. 验证结果:使用EasyMock.verify()检查Mock对象的所有预期调用是否都已发生。 除了EasyMock,还有其他类似的库,如Mockito和JMock,它们提供了更高级的功能,如更加...
Mock对象是软件测试中的一种重要工具,用于模拟真实对象的行为,从而在单元测试中隔离被测代码的依赖项。本项目将介绍如何使用Objective-C的测试框架和第三方库来创建和使用Mock对象,并提供一些示例代码。 **适用...
本文将详细介绍软件测试(Junit单元测试)的相关知识点,包括Eclipse的使用、JDK的下载和安装、Junit单元测试的使用、数据库开发过程中的Junit使用、使用Junit进行类测试、抽象类测试、Mock对象测试等。 一、 ...
Mock对象可以替代真实对象,模拟返回值或行为,以便测试代码可以专注于单个功能,而不会受到外部因素的影响。这在测试涉及网络请求、数据库操作或其他外部资源的代码时特别有用。Mocking工具如Mockito允许开发者创建...
6. **Mock对象测试**:使用Mockito或其他工具创建Mock对象,隔离测试,确保业务逻辑的正确性。 总的来说,这个项目是一个很好的实践平台,可以帮助Java开发者深入理解如何在实际项目中整合这些主流的开源技术,提升...
首先,Mock对象是在单元测试中用于替代真实依赖的对象,它可以模仿实际对象的行为,但通常只关注某些特定方法的调用。这使得测试更加可控,避免了对其他系统组件的间接依赖。在.NET中,我们可以使用诸如Moq或...
3. **验证Mock行为**:确保Mock对象在测试过程中被正确调用,验证其方法的调用次数、参数和返回值。 4. **保持测试独立**:Mock应当使每个测试独立运行,不受其他测试的影响。 5. **避免Mock静态方法**:静态方法...
9. **集成测试中的Mock**:在集成测试中,Mock对象也可以用来隔离系统中的不同组件,只测试目标组件与其他组件的交互。 10. **Mock的最佳实践**:避免过度Mock,因为这可能导致测试过于脆弱,对代码修改敏感。尽量...
通过使用Mock技术,可以创建一个虚拟的对象,它能够返回期望的数据,从而模拟特定的测试场景。Mock可以应用在客户端测试,也可以用在服务端测试中。 客户端测试中的Mock处理通常可以借助一些抓包工具,如Fiddler、...
在测试中,我们用Mock对象来替换那些难以控制或可能引起错误的真实对象,这样可以更专注于测试代码本身的功能,而不是外部依赖。 在SpringBoot中,我们可以利用Mockito库来创建和管理Mock对象。Mockito是一个强大的...
Mock对象是替代真实对象的模拟版本,它可以在测试中代替真实的对象,返回预设的值或行为。在Python的`unittest.mock`库中,我们可以创建和配置Mock对象,以便精确控制它们在测试中的行为。 2. **为什么使用Mock?*...