`
jiangduxi
  • 浏览: 456489 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Test a JavaBean

阅读更多
问题:
  如果要测试一个JavaBean,但对你来说好像写的测试似乎千篇一律又不放心。
背景:
  因为JavaBean跟一堆get和set方法差不多,所以你为bean编写的测试代码看起来重复性很大,这肯定无法让你感到满意,其实有很多人也都这么认为。
诀窍:
  在大多数情况下,测试JavaBean没什么特别的。
1. bean的一个属性就是直接与域内的数据进行交互而且不进行计算,因此测试相应的set和get方法是没多大用的。不要浪费时间做这样的事情。
2. 对于需要计算的属性值,写简单的测试程序验证属性值是否被正确的计算。
3. 对于bean的事件方法,没有什么特殊的要做;因此,将它的方法当做普通的简单方法来测试就可以了。
4. 对于bean的方法,没什么特殊的要做;因此,将它的方法当做普通的简单方法来测试就可以了。
5. 对于bean的事件方法,比如属性改变的事件,那要看前面怎么来测试了。如果将bean当作一个事件源,因为它的确也就是。

在JavaBeans方面唯一的测试技巧是正常性测试。JavaBean规范要求无参数的构造函数,然而大多数的bean都要求属性值非空。这就意味着:当构造函数完成以后,得到的对象其实并没有被完全初始化。我们称之为“不正常对象”,因为如果你这时候使用它的任何方法,你都无法确定你将获得什么结果。
为了实现正常性测试,请引入一个名为isValid()的方法,用它来确认必要的属性值是否确实为非空。你的测试使用的isValid()方法,实际上表明了哪些属性值是必要的,哪些是可以选的。就像有人说的一样,如果java.util.Calender也提供了这种方法就很好啊。

在一个简单的JavaBean类中,如果属性值直接映射为类中的一个域,那么一般来讲你无须为set方法编写测试,因为他们过于简单而很难出错。但是,如下的JavaBean测试程序仍然是值的写的。
 public void testBankTransferCommandValid(){
   BankTransferCommand command = new BankTransferCommand();
  
  command.setSourceAccountId("123-456A");
  command.setTargetAccountId("987-654B");
  command.setAmount(Money.dollars(1000));

  assertTrue(command.isReadyToExecute());
  }

这个测试展示了,如果程序程序设置了accountID,target accountID和要转账的金额,那就说明command已经准备好,可以执行了。在这里为了更好地表明意图,我们将isValid()改为isReadyToExecute().这个测试验证了是否已经为转账准备了充足的条件,这个命令是否已经有效、是否可以被执行了。为了完整,我们进入如下测试:
 public void testNeedsAmount(){
    BankTransferCommand command = new BankATransferCommand();

   command.setSourceAccountId("123-456");
   command.setTargetAccountId("987-654B");
   //不要设置数量
   assertFalse(command.isReadyToExecute());
  }

这个测试说明,如果没有提供转账的数额,命令就不能执行。
分享到:
评论

相关推荐

    javabean 学习(适合初学者)

    ### JavaBean 学习知识点详解(适合初学者) #### 一、JavaBean 概述 JavaBean 是一种可重用的软件组件模型,主要用于 Java 应用程序开发中。JavaBean 的概念最早由 Sun Microsystems 提出,其设计目的是为了简化 ...

    $jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试

    <description>A application for test. <!-- 新增 Servlet 注册 --> <servlet-name>TestServlet <servlet-class>test.TestServlet <servlet-name>TestServlet <url-pattern>/test 5. 重启 Tomcat ...

    jsp中使用javabean的两点注意事项

    Cannot find any information on property 'Msg' in a bean of type 'test.TestBean' ``` 这表示JSP页面试图访问名为`Msg`的属性,但JavaBean中实际存在的是`msg`(首字母小写)。 #### 解决方案 1. **确保属性名...

    JSP+JavaBean分页实现方案

    本文将详细介绍如何使用JSP(JavaServer Pages)和JavaBean来实现一个通用的分页功能,适合任何数据库系统。 首先,我们需要理解JSP和JavaBean的基本概念。JSP是一种动态网页技术,它允许我们在HTML页面中嵌入Java...

    jsp和JavaBean实现数据分页

    本篇将介绍如何使用JavaServer Pages (JSP) 和 JavaBean 技术来实现数据分页。JSP是Java的一种动态网页技术,而JavaBean则是一种可重用的Java组件,它们结合可以提供强大的后端功能。 首先,我们需要理解数据分页的...

    jsp+javaBean的计数器

    3. **JavaBean类**:`addone.java` 和 `display.java` 需要先编译,然后放置到 `test6.jsp` 同级目录的 `WEB-INF/classes/popeyelin/` 路径下。 4. **计数器数据存储**:使用文本文件 `counter.txt` 来记录访问次数...

    mysql+jsp+javabean实现分页技术

    本项目是关于如何使用MySQL数据库、JavaServer Pages(JSP)和JavaBean来实现网页上的分页功能。这里我们将深入探讨这些组件以及它们在实现分页中的作用。 **MySQL分页** MySQL数据库提供了`LIMIT`和`OFFSET`...

    jsp javabean 分页

    在Java Web开发中,JSP(JavaServer Pages)和JavaBean是两个重要的组成部分。JSP主要负责视图层的展示,而JavaBean则用于封装业务逻辑和数据。当我们需要处理大量数据时,分页功能就显得尤为重要,因为它可以帮助...

    Test多表联合增删改查,struts两个JAVABEAN

    综上所述,"Test多表联合增删改查,struts两个JAVABEAN"这个主题涵盖了Struts框架的使用、JavaBean的设计、SSH框架的集成、Android开发的基础、数据库管理和设计模式的应用等多个IT领域的重要知识点。通过深入学习和...

    Tomcat下JSP、Servlet和JavaBean的配置

    - 创建一个简单的Java类`Test.java`,包含`public class Test{ public static void main(String args[]){ System.out.println("This is a test program."); } }`。 - 编译并运行该程序,确保控制台输出“这是测试...

    javabean分页

    JavaBean在Web开发中扮演着重要角色,它是一种符合JavaBeans规范的Java类,通常用于封装数据和业务逻辑。在大型应用中,特别是在处理大量数据时,分页显示是必不可少的功能,可以有效提高用户体验,避免一次性加载...

    JSP+JavaBean实现MySQL子查询数据库分页

    本教程将详细讲解如何使用JSP(JavaServer Pages)配合JavaBean来实现MySQL数据库的子查询分页功能。在Eclipse 3.4环境下,我们可以轻松地完成这一过程。 首先,我们需要理解JSP和JavaBean的基本概念。JSP是一种...

    JSP期末考试试卷(A卷).doc

    JSP 期末考试试卷 (A 卷) 本试卷涵盖了 JSP 的基础知识和应用,包括 HTML、Servlet、JavaBean、JSP 隐含对象、配置文件 web.xml 等方面。 1. HTML 页面中,定义浏览器标题的 `<Title>` 标记应该写在 `<HEAD></HEAD...

Global site tag (gtag.js) - Google Analytics