Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14418033
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:44:27

下载本文示例代码
  在测试用例中通过setUp()、tearDown()创建测试固件,只能使这个测试固件在单个测试用例的不同测试方法中共用,如果有多个测试用例都需要使用相同的测试固件,就需要将测试固件抽取到一个独立的类中。JBuilder提供了3个预定义的测试固件类,它们分别是:  ·JDBC测试固件(JDBC Fixture):用于获取数据库连接的测试固件,用户仅需要通过设置一些数据库信息,就可以用方便的方法获取数据连接。  ·JNDI 测试固件(JNDI Fixture):用于模拟从JDNI环境中获取对象的测试固件。  ·比较测试固件(Comparision Fixture):将测试输出到外部文件中,以便第二次测试时进行比较。  ·自定义测试固件(Custom Fixture):用户自定义的测试固件。  如果对JUnit的框架结构非常了解,也许这些JBuilder扩展的测试固件对你来说意义并不大,它们无非是构建一些常见的测试环境罢了,你完全可以自己编写。在本节里,我们介绍两个测试固件。  JDBC测试固件  如果你的工程中已经有一个获取数据连接的公共类,你也有必要构建一个JDBC测试固件,因为JDBC测试固件不但可以直接通过创建测试用例的向导直接指定,此外,JDBC测试固件还提供了许多面向测试的方法。  为了创建JDBC测试固件,我们先创建一个JDataStore的数据库,其数据文件位于/db/hr.jds,这个数据库的用户名和密码是:sysdba/123456。hr.jds数据库中有一张EMPLOYEE的表,其结构如下所示: 图 错误!文档中没有指定样式的文字。EMPLOYEE表的数据  EMPLOYEE有3个字段,分别是ID、NAME和AGE,分别是String、String和int类型,并按上图所示填入3条记录。  为了演示JDBC测试固件的具体使用,我们设计两个业务类:Employee和EmployeeDAO,尔后用JDBC测试固件为测试EmployeeDAO提供数据连接。这两个类的代码如下:  代码清单 错误!文档中没有指定样式的文字。Employee.java类 1. package chapter25.db;2. public class Employee3. {4.  private String id;5.  private String name;6.  private int age;7.  public Employee(String id, String name, int age) {8.   this.id = id;9.   this.name = name;10.  this.age = age;11.  }12.  public String getId() {13.   return id;14.  }15.  public String getName() {16.   return name;17.  }18.  public int getAge() {19.   return age;20.  }21.  public boolean equals(Object o) {22.   if (o instanceof Employee) {23.    Employee e1 = (Employee) o;24.    return id.equals(e1.getId()) && name.equals(e1.getName()) &&age == e1.getAge();25.   } else {26.    return false;27.   }28.  }29. }   Employee类用于描述EMPLOYEE表的一条记录,该类访问数据库的EmployeeDAO代码如下所示:  代码清单 错误!文档中没有指定样式的文字。EmployeeDAO.java类 1. package chapter25.db;2. import java.sql.*;3. public class EmployeeDAO4. {5.  private Connection conn;6.  public EmployeeDAO(Connection conn) {7.   this.conn = conn;8.  } 9.  public Employee findById(String id) throws SQLException10.  {11.   String sqlStr = "select * from employee where id ='" id "'";12.   Statement stat = conn.createStatement();13.   ResultSet rs = stat.executeQuery(sqlStr);14.   if (rs.next()) {15.    return new Employee(id,rs.getString("name"),rs.getInt("age"));16.   }else{17.    return null;18.   }19.  }20. }   为了节省篇幅,我们仅提供一个访问数据库的访问方法:findById(),即通过id查找Employee对象。  下面,我们利用JBuilder向导创建一个JDBC测试固件:  1. File->New...->Test->在Test页中,双击JDBC Fixture图标,启动创建向导,其对话框如下所示: 图 错误!文档中没有指定样式的文字。指定JDBC测试固件类名  在Class name中为JDBC测试固件指定类名:HrJdbcFixture,接受其他的默认设置,按Next到下一步。共3页。 1 2 3 :   在测试用例中通过setUp()、tearDown()创建测试固件,只能使这个测试固件在单个测试用例的不同测试方法中共用,如果有多个测试用例都需要使用相同的测试固件,就需要将测试固件抽取到一个独立的类中。JBuilder提供了3个预定义的测试固件类,它们分别是:  ·JDBC测试固件(JDBC Fixture):用于获取数据库连接的测试固件,用户仅需要通过设置一些数据库信息,就可以用方便的方法获取数据连接。  ·JNDI 测试固件(JNDI Fixture):用于模拟从JDNI环境中获取对象的测试固件。  ·比较测试固件(Comparision Fixture):将测试输出到外部文件中,以便第二次测试时进行比较。  ·自定义测试固件(Custom Fixture):用户自定义的测试固件。  如果对JUnit的框架结构非常了解,也许这些JBuilder扩展的测试固件对你来说意义并不大,它们无非是构建一些常见的测试环境罢了,你完全可以自己编写。在本节里,我们介绍两个测试固件。  JDBC测试固件  如果你的工程中已经有一个获取数据连接的公共类,你也有必要构建一个JDBC测试固件,因为JDBC测试固件不但可以直接通过创建测试用例的向导直接指定,此外,JDBC测试固件还提供了许多面向测试的方法。  为了创建JDBC测试固件,我们先创建一个JDataStore的数据库,其数据文件位于/db/hr.jds,这个数据库的用户名和密码是:sysdba/123456。hr.jds数据库中有一张EMPLOYEE的表,其结构如下所示: 图 错误!文档中没有指定样式的文字。EMPLOYEE表的数据  EMPLOYEE有3个字段,分别是ID、NAME和AGE,分别是String、String和int类型,并按上图所示填入3条记录。  为了演示JDBC测试固件的具体使用,我们设计两个业务类:Employee和EmployeeDAO,尔后用JDBC测试固件为测试EmployeeDAO提供数据连接。这两个类的代码如下:  代码清单 错误!文档中没有指定样式的文字。Employee.java类 1. package chapter25.db;2. public class Employee3. {4.  private String id;5.  private String name;6.  private int age;7.  public Employee(String id, String name, int age) {8.   this.id = id;9.   this.name = name;10.  this.age = age;11.  }12.  public String getId() {13.   return id;14.  }15.  public String getName() {16.   return name;17.  }18.  public int getAge() {19.   return age;20.  }21.  public boolean equals(Object o) {22.   if (o instanceof Employee) {23.    Employee e1 = (Employee) o;24.    return id.equals(e1.getId()) && name.equals(e1.getName()) &&age == e1.getAge();25.   } else {26.    return false;27.   }28.  }29. }   Employee类用于描述EMPLOYEE表的一条记录,该类访问数据库的EmployeeDAO代码如下所示:  代码清单 错误!文档中没有指定样式的文字。EmployeeDAO.java类 1. package chapter25.db;2. import java.sql.*;3. public class EmployeeDAO4. {5.  private Connection conn;6.  public EmployeeDAO(Connection conn) {7.   this.conn = conn;8.  } 9.  public Employee findById(String id) throws SQLException10.  {11.   String sqlStr = "select * from employee where id ='" id "'";12.   Statement stat = conn.createStatement();13.   ResultSet rs = stat.executeQuery(sqlStr);14.   if (rs.next()) {15.    return new Employee(id,rs.getString("name"),rs.getInt("age"));16.   }else{17.    return null;18.   }19.  }20. }   为了节省篇幅,我们仅提供一个访问数据库的访问方法:findById(),即通过id查找Employee对象。  下面,我们利用JBuilder向导创建一个JDBC测试固件:  1. File->New...->Test->在Test页中,双击JDBC Fixture图标,启动创建向导,其对话框如下所示: 图 错误!文档中没有指定样式的文字。指定JDBC测试固件类名  在Class name中为JDBC测试固件指定类名:HrJdbcFixture,接受其他的默认设置,按Next到下一步。共3页。 1 2 3 : 下载本文示例代码


JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件JBuilder2005单元测试之创建测试固件
阅读(120) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~