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,一个测试的例子就好了。
分享到:
- 2006-12-12 09:08
- 浏览 4630
- 评论(8)
- 论坛回复 / 浏览 (8 / 6502)
- 查看更多
相关推荐
**一、单元测试之测试目的** 单元测试,作为软件开发过程中的重要环节,其核心目标在于确保代码的质量、可维护性和可扩展性。它通过独立测试软件中的最小可测试单元,如函数或方法,来验证其功能是否符合预期。这一...
四、测试实践 在案例中,你将看到如何创建测试类,定义测试方法,设置测试数据,以及如何利用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对象**技术在单元测试中扮演着关键角色,它允许测试者在不实际调用...