解释型数据源是一个表格数据源,它被 SOAtest 视为 Java 对象图表的相关表现形式。解释型数据源可用于方便创建多个 Java 对象和对象图,它们可以被 EJB 客户端工具和其他 SOAtest 工具用作测试参数输入。有关 EJB 客户端工具的更多消息,请查阅 EJB 客户端。
从 Java Bean 的字段生成数据源
若要从 Java Bean 的字段生成数据源:
- 进行下列其中一项操作:
- 关于套件级别数据源,请选择所需的套件节点,然后单击 Add Database 工具栏按钮。
- 关于项目级别数据源,右键单击相关项目的 Test Case Explorer 节点,然后选择 Add New> Data Source。
- 关于全局级别数据源,右键单击 Test Case Explorer 的 Global Data Sources 节点,然后选择 Add New> Data Source。
- 关于套件级别数据源,请选择所需的套件节点,然后单击 Add Database 工具栏按钮。
- 选择 Bean 向导 ,然后单击 Next。将打开 Bean 向导 对话框。
- 在 Bean 向导对话框中完善以下选项:
- Destination Type:从下拉菜单中选择要创建的表模板类型。
- Destination Directory:指定将在何处写入表。
- Write Over Existing Files:指定是否重写现有文件。
- Java Class:指定想为哪个类创建表格表示法。
- Trace Dependencies:对跟踪依赖项选择 Yes 或 No 。选择 Yes ,提示 SOAtest 生成“reachable”的类成员变量的类型的表,该变量来自 Java 类字段中指定的“root”类。
- 单击 Next 按钮。将打开 Dependencies 对话框。
- 从 Generate Table for Classes 列表中选择所需的类型依赖项。
- 单击 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 |
---|---|---|---|---|---|---|
1 | SampleBank | AddressDO 1 | PersonDO 1 | 1234123412341 234 | 8/31/2005 | RecentActivities-1 |
AddressDO.csv 表
soatest.examples.AddressDO | city | state | streetAddress | zipCode |
---|---|---|---|---|
1 | Los Angeles | CA | 101 E. Huntington Dr. | 91016 |
PersonDO.csv 表
soatest.examples.PersonDO | firstName | lastName |
---|---|---|
1 | Donald | Duck |
ActivityDO.csv 表
soatest.examples.ActivityDO | amount | description |
---|---|---|
soatest.examples.ActivityDO | amount | description |
1 | 10 | 10 Charge-10 |
2 | 20 | 20 Charge-20 |
3 | 30 | 30 Charge-30 |
4 | 40 | 40 Charge-40 |
5 | 50 | 50 Charge-50 |
6 | 60 | 60 Charge-60 |
7 | 70 | 70 Charge-70 |
8 | 80 | 80 Charge-80 |
9 | 90 | 90 Charge-90 |
10 | 100 | 100 Charge-100 |
RecentActivities-1.csv 表
ActivityDO ref |
---|
ActivityDO 1 |
ActivityDO 2 |
ActivityDO 3 |