解释型数据源是一个表格数据源,它被 SOAtest 视为 Java 对象图表的相关表现形式。解释型数据源可用于方便创建多个 Java 对象和对象图,它们可以被 EJB 客户端工具和其他 SOAtest 工具用作测试参数输入。有关 EJB 客户端工具的更多消息,请查阅 EJB 客户端

从 Java Bean 的字段生成数据源

若要从 Java Bean 的字段生成数据源:

  1. 进行下列其中一项操作:
    • 关于套件级别数据源,请选择所需的套件节点,然后单击 Add Database 工具栏按钮。



    • 关于项目级别数据源,右键单击相关项目的 Test Case Explorer 节点,然后选择 Add New> Data Source
    • 关于全局级别数据源,右键单击 Test Case Explorer 的 Global Data Sources 节点,然后选择 Add New> Data Source
  2. 选择 Bean 向导 ,然后单击 Next。将打开 Bean 向导 对话框。



  3. 在 Bean 向导对话框中完善以下选项:
    • Destination Type从下拉菜单中选择要创建的表模板类型。
    • Destination Directory指定将在何处写入表。
    • Write Over Existing Files指定是否重写现有文件。
    • Java Class:指定想为哪个类创建表格表示法。
    • Trace Dependencies对跟踪依赖项选择 Yes 或 No 。选择 Yes ,提示 SOAtest 生成“reachable”的类成员变量的类型的表,该变量来自 Java 类字段中指定的“root”类。
  4. 单击 Next 按钮。将打开 Dependencies 对话框。
  5. 从 Generate Table for Classes 列表中选择所需的类型依赖项。
  6. 单击 Finish 按钮,生成表。这些表将在指定的目录中创建,每个文件的数据源将添加到你所选定的测试套件中。

解释型数据源表格式

以下是 SOAtest 使用的关系到对象映射的主要概念:

  • 对象是表中的一行。
  • 有两种类型的表:
    • 类表
      • 每个类成员变量的列
      • 每个实例的行
    • 集合表
      • 实际对象的表和行的列
      • 每个实例的行

对象引用

 每张表的第一列都是对象实例的标识符。表名引用的对象后可能紧跟一个空格,空格后紧跟一个对象标识符。标识符列不需要行号,只要每张表中的标识符是唯一的即可。

数值和引用

非基元类的字段值通常是通过对象引用指定的,如上所述。然而,对于基元类型的值来说,额外级别的间接是没有必要的,并且很麻烦。为了适应缩写形式,内置支持内联具有定义良好的字符串表示的常用类型。引用列中的空白单元格被解释为空值。数值列的空白单元格被解释为空字符串。

集合

为了支持可变大小的集合,引入了一个集合表。集合表只有一个引用列。表名引用集合中的对象后紧跟着一个空格,空格后紧跟着对象标识符。

例如

作为一个例子,让我们考虑将 CreditCardDO 的对象图表视为根。CreditCardDO 包含 PersonDO、 AddressDO 和 Vector of ActivityDO 类型对象的实例。type objects.


public class CreditCardDO extends PaymentMethodDO implements Serializable
{
    protected String ccNumber;    
    protected Date expirationDate;
    protected PersonDO ccHolder;
    protected AddressDO billingAddress;
    protected Vector recentActivity = new Vector();
  
    // 省略 set…()/get…() 方法
}
public class PaymentMethodDO implements Serializable {
    protected String bankName;
  
    // 省略 set…()/get…() 方法
}
public class AddressDO implements Serializable {
    protected String streetAddress;    
    protected String city;
    protected int zipCode;
    protected String state;
  
    // 省略 set…()/get…() 方法
}
public class PersonDO implements Serializable {
    protected String firstName;
    protected String lastName;
  
    // 省略 set…()/get…() 方法
}
public class ActivityDO implements Serializable {
    private float amount;
    private String description;
  
    // 省略 set…()/get…() 方法
}


下表阐明了如何以表格形式展示上述的对象图示例:
Table CreditCardDO.csv

soatest.examples.CreditCardDO
bankName
billingAddress ref
ccHolder ref
ccNumber
expirationDate
recentActivityref 
1SampleBankAddressDO 1PersonDO 1

1234123412341

234

8/31/2005RecentActivities-1

AddressDO.csv 表

soatest.examples.AddressDO
city
state
streetAddress
zipCode
1Los AngelesCA101 E. Huntington Dr.91016

PersonDO.csv 表

soatest.examples.PersonDO
firstName
lastName
DonaldDuck

ActivityDO.csv 表

soatest.examples.ActivityDO
amount
description
soatest.examples.ActivityDO
amount
description
11010 Charge-10
22020 Charge-20
33030 Charge-30
44040 Charge-40
55050 Charge-50
66060 Charge-60
77070 Charge-70
88080 Charge-80
99090 Charge-90
10100100 Charge-100

RecentActivities-1.csv 表

ActivityDO ref
ActivityDO 1
ActivityDO 2
ActivityDO 3
  • No labels