解释型数据源是一个表格式的数据源,SOAtest 将其视为 Java 对象图的关系表示。解释型数据源可以用来帮助创建多个 Java 对象和对象图,这些对象图可以作为 EJB 客户端工具和其他 SOAtest 工具的测试参数输入。有关 EJB 客户端工具的更多消息,请查阅 EJB 客户端。
从 Java Bean 的字段生成数据源
若要从 Java Bean 的字段生成数据源:
- 请执行以下任一操作:
- 针对测试套件级别数据源,请选择所需的套测试件节点,然后单击 Add Database 工具栏按钮。
- 针对项目级别数据源,右键单击相关项目的 Test Case Explorer 节点,然后选择 Add New> Data Source。
- 针对全局级别数据源,右键单击测试用例资源管理器的 Global Data Sources 节点,然后选择 Add New> Data Source。
- 针对测试套件级别数据源,请选择所需的套测试件节点,然后单击 Add Database 工具栏按钮。
- 选择 Bean Wizard ,然后单击 Next。将显示 Bean Wizard 对话框。
- 完成 Bean Wizard 对话框中的以下选项:
- Destination Type: 从下拉菜单中选择要创建的表模板的类型。
- Destination Directory: 指定表的写入位置。
- Write Over Existing Files: 指定是否要覆盖现有文件。
- Java Class: 指定要为其创建表格表示形式的类。
- Trace Dependencies: 为跟踪依赖性选择 Yes 或 No 。选择 Yes 提示 SOAtest 从您在 Java Class 字段中指定的“根”类为“可访问”的类成员变量类型生成表。
- 单击 Next 按钮。将显示 Dependencies 对话框。
- 从 Generate Table for Classes 列表选择所需类型依赖项。
- 单击 Finish 按钮,生成表格。这些表将在指定目录中创建,并且每个文件的数据源都将添加到您选择的测试套件中。
解释型数据源表格式
以下是 SOAtest 使用的关系到对象映射的主要概念:
- 对象是表中的一行。
- 表有两种类型:
- Class Tables
- 每个类成员变量的列
- 每个实例的行
- Collection Tables
- 实际对象表和行的列
- 每个实例的行
- Class Tables
Object References
每个表中的第一列是对象实例的标识符。可以通过表名、空格、对象标识符来引用对象。标识符列不必一定是行号,只要标识符值在每个表中都是唯一的即可。
Values and References
非原始类的字段值通常如上所述通过对象引用指定。但是,对于原始类型的值,额外的间接级别是不必要且麻烦的。为了适应缩写形式,提供了内置支持,用于使用定义良好的字符串表示形式内联常用类型。reference 列中的空单元格将解释为空值。value 列针对空单元格将解释为空字符串。
Collections
为了支持可变大小的集合,引入了一个集合表。集合表只有一个 reference 列。集合中的对象由表名、空格、对象标识符引用。
例如
例如,让我们考虑以 CreditCardDO
为根的对象图。CreditCardDO
包含 PersonDO
和 AddressDO
的示例,以及 Vector of ActivityDO
类型对象。
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…() methods omitted } public class PaymentMethodDO implements Serializable { protected String bankName; // set…()/get…() methods omitted } public class AddressDO implements Serializable { protected String streetAddress; protected String city; protected int zipCode; protected String state; // set…()/get…() methods omitted } public class PersonDO implements Serializable { protected String firstName; protected String lastName; // set…()/get…() methods omitted } public class ActivityDO implements Serializable { private float amount; private String description; // set…()/get…() methods omitted } |
下表说明了如何以表格格式表示上述对象图示例:
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 |
Table AddressDO.csv
soatest.examples.AddressDO | city | state | streetAddress | zipCode |
---|---|---|---|---|
1 | Los Angeles | CA | 101 E. Huntington Dr. | 91016 |
Table PersonDO.csv
soatest.examples.PersonDO | firstName | lastName |
---|---|---|
1 | Donald | Duck |
Table 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 |
Table RecentActivities-1.csv
ActivityDO ref |
---|
ActivityDO 1 |
ActivityDO 2 |
ActivityDO 3 |