Action的测试是比较辛苦的。因为它依赖与其他的环境(比如tomcat)。
在我的印象中,基于struts的测试是很麻烦的,因为对于execute方法,你必须mock两个对象进去。
还好。基于Webwork的测试相对简单些。
下面让我们来测试一个例子吧
java 代码
-
Account account;
-
IAccountService accountService;
-
public void setAccount(Account account) {
-
this.account = account;
-
}
-
-
public void setAccountService(IAccountService accountService) {
-
this.accountService = accountService;
-
}
-
-
public String regist() throws Exception {
-
if(account == null) {
-
account = new Account();
-
return INPUT;
-
}
-
-
if(!validForm(account))
-
return INPUT;
-
-
try {
-
accountService.regist(account);
-
} catch (ObjectExistsException e) {
-
e.printStackTrace();
-
return INPUT;
-
}
-
-
return SUCCESS;
-
}
-
-
private boolean validForm(Account e) {
-
if(e.getName() == null || e.getName().trim().equals(""))
-
return false;
-
if(e.getPassword() == null || e.getPassword().trim().equals(""))
-
return false;
-
return true;
-
}
有经验的程序员见到上面的代码应该就知道怎么测试了。
我们只需setAccount,跟setAccountService即可,
而Account本身来讲就是是个po,所以可以自己new一个
AccountService则可以mock一个。真是太完美了,我太喜好mock,它总是给我惊喜
java 代码
-
package org.wuhua.action;
-
-
import junit.framework.TestCase;
-
-
import org.easymock.MockControl;
-
import org.wuhua.exception.ObjectExistsException;
-
import org.wuhua.model.Account;
-
import org.wuhua.service.IAccountService;
-
-
import sms.king.AccountManager;
-
-
import com.opensymphony.xwork.Action;
-
-
public class AccountActionTest extends TestCase {
-
private MockControl control;
-
IAccountService accountService;
-
protected void setUp() throws Exception {
-
control = MockControl.createControl(IAccountService.class);
-
accountService = (IAccountService) control.getMock();
-
-
}
-
-
public void testRegistOk() throws Exception {
-
Account employee = new Account("name");
-
employee.setPassword("password");
-
-
-
-
-
accountService.regist(employee);
-
control.setVoidCallable(1);
-
-
control.replay();
-
-
AccountAction action = new AccountAction();
-
action.setAccount(employee);
-
action.setAccountService(accountService);
-
-
assertEquals(Action.SUCCESS, action.regist());
-
-
control.verify();
-
}
-
-
public void testRegistNameExists() throws Exception {
-
Account employee = new Account("name");
-
employee.setPassword("password");
-
-
-
-
-
accountService.regist(employee);
-
control.setThrowable(new ObjectExistsException(""));
-
-
control.replay();
-
-
AccountAction action = new AccountAction();
-
action.setAccount(employee);
-
action.setAccountService(accountService);
-
-
assertEquals(Action.INPUT, action.regist());
-
-
control.verify();
-
}
-
}
ok,一个测试的例子就好了。
分享到:
相关推荐
**一、单元测试之测试目的** 单元测试,作为软件开发过程中的重要环节,其核心目标在于确保代码的质量、可维护性和可扩展性。它通过独立测试软件中的最小可测试单元,如函数或方法,来验证其功能是否符合预期。这一...
四、测试实践 在案例中,你将看到如何创建测试类,定义测试方法,设置测试数据,以及如何利用JUnit和Spring/Struts提供的工具来编写高效的单元测试。通过分析和运行源码,你可以了解如何将这些概念应用于实际项目,...
单元测试是软件开发过程中的重要环节,它允许开发者对代码的各个部分进行独立验证,确保它们按照预期工作。...在Web开发项目中,单元测试应被视为最佳实践,以确保每个功能的正确性,减少后期维护的难度。
【标题】"Junit测试Action"涉及的是在Java开发中使用JUnit进行Action类的单元测试。JUnit是一款广泛使用的Java编程语言的单元测试框架,它使得开发者能够方便地编写和执行测试用例,确保代码的质量和功能的正确性。 ...
在Android开发中,Activity是应用的核心组件之一,它负责用户界面的展示和交互。进行Activity的单元测试对于确保代码质量、...务必记住,良好的测试实践可以大大提高软件质量,减少bug的出现,从而提升用户的满意度。
其次,"JUnit.in.Action中文版.pdf" 是一本关于JUnit实践的中文书籍,深入介绍了单元测试的最佳实践和JUnit的高级特性,比如测试套件(Test Suites)、参数化测试、模拟对象(Mocks)和超时测试等。阅读这本书将使你...
以下是使用MockStrutsTestCase进行Action测试的关键知识点: 1. **MockStrutsTestCase的引入**:首先,在项目中添加MockStrutsTestCase的依赖。这通常通过Maven或Gradle等构建工具完成。之后,你可以继承...
【自动化测试的实践-应用QTP测试框架】 自动化测试是一种高效、精确的软件质量保障手段,尤其在大型软件项目中,能显著提升测试效率并减少人为错误。QuickTest Professional(QTP,现已被HP Unified Functional ...
#### 四、Mock Struts1测试实践 ##### 1. 使用StrutsTest框架 StrutsTest是一个专门为Struts1设计的测试框架,它可以提供一个模拟的运行环境,使开发者能够在没有实际Web服务器的情况下测试Action类。为了使用...
- **Action的维护**:学习如何维护测试脚本中的Action。 - **关键字视图**:理解关键字视图的概念和用途。 - **检查点**:设置和使用检查点来验证预期结果。 - **参数化**:利用参数化技术增强脚本的灵活性。 - **...
QTP 自动化测试项目实践 QTP 自动化测试项目实践是自动化测试的重要环节,适当地调整和增强测试脚本,能提高测试脚本的灵活性,增加测试覆盖面,以及提高应对测试对象变更的能力。数据驱动方式的测试脚本开发是解决...
自动化测试是现代软件开发过程中...综上所述,QTP测试框架的实践涉及自动化测试的规划、设计、实现和管理等多个方面,需要深入理解业务逻辑,熟练掌握测试工具,以及妥善解决技术难点,以实现高效、可靠的自动化测试。
总之,《JUnit in Action》中文版是一本全面的指南,它不仅教会读者如何使用JUnit进行单元测试,还引导读者理解测试的重要性和最佳实践。通过阅读这本书,中国的Java开发者能够提升自己的测试技能,从而提高软件项目...
Java作为一种广泛应用的编程语言,有着丰富的测试框架支持TDD,其中JUnit是Java领域最知名的单元测试框架之一。《JUnit in Action, 2nd Edition》这本书深入探讨了如何有效地使用JUnit进行测试驱动的Java开发。 ...
这四个组件各自承担着不同的职责,是Android系统交互的基础。 1. **Activity**: Activity是用户与应用交互的界面,代表了应用程序中的一个可视化窗口。当用户在屏幕上看到一个屏幕或窗口时,通常就是在与一个...
### 单元测试工具——GMOCK概述 #### 一、引言 单元测试作为软件开发过程中的一个重要环节,能够帮助开发者确保代码的质量与稳定性。其中,**Mock对象**技术在单元测试中扮演着关键角色,它允许测试者在不实际调用...