测试数据表允许您定义在运行测试时可以使用的测试输入和期望输出数据。测试数据表与测试行为脚本是同步的,因此,您对代码所作的修改就会反映在测试数据表中,反之亦然。
以下屏幕捕获显示测试数据表的示例。
测试数据表中的每一行都表示代码中的一个对象或表达式,每一列都表示一个数据集(或等价类)。每个数据集列分成两半,一半用于存放输入值,另一半用于存放期望的输出值。期望输出包括返回值、异常以及专门为输出标记的任何参数。
借助测试数据表,可以执行下列任务:
对于可以出现在赋值语句右边的任何语法有效的表达式,可以将它作为表达式输入到测试数据表中。这些表达式包括基本类型、字符串(用双引号引起来)、变量引用、构造函数和方法调用。
还可以插入要用作测试输入、期望输出和返回值的集合和范围。测试数据表包含它自己的集合和范围编辑器,用于定义集合和范围。只需在表单元格中单击右键,然后单击定义集合或者定义范围。注意,不使用集合或范围编辑器,就无法在单元格中输入集合或范围。集合在数据表中以花括号({ })和定义集合所需的所有逗号分隔的值显示。范围在数据表中以逗号分隔的值(用方括号([ ])括起来)显示。
测试数据表还可以包括至数据池的链接。数据池是由基本数据类型或其相应包装器类型组成的相关数据记录的集合。数据池中的每个变量都被测试数据表解释为一个集合。可以使用数据池编辑器编辑数据池,通过双击数据池链接可以打开数据池编辑器。
在测试数据表中除了使用表达式、范围、集合和对象以外,还可以使用数组。数组是基本元素或对象元素的有序列表的容器。数组可以是一维的,也可以是多维的;即,它们可以包含其它数组。在测试数据表中,数组是分层显示的,数组中的每个元素都出现在它所属的行中,并嵌套在表示数组的那一行下面。数组中的每个元素都显示了它自己的下标,可以独立地检索和更改这些元素。这样,数组中的第一个元素显示为 [0],第二个元素显示为 [1],依此类推。
基于基本类型(int、char、double 和 long 等等)、合并的基本类型(例如,Integer 或 Double)或 String 的自变量可以作为测试数据表中的单个行来实现可视化。然而,具有多个定义属性的对象不能在测试数据表的单个行中实现可视化。这些复杂对象是在测试数据表的若干行中分层表示的。
单击测试数据表中任何包含对象的单元格时,可以从用来定义对象的方法列表中进行选择。可以根据一个或多个构造函数或一组或多组对象属性来定义对象。当从列表中选择一项时,用来表示对象的行将展开,以显示已经选择的定义属性。
数据集(或等价类)是一组输入值,它们全部都应该调用同一行为。数据集可帮助您将数据分配到逻辑单元中,您的代码应该采用同一种方式来处理这些逻辑单元。测试数据表中的每个数据集都包含用于存放输入值的一列和用于存放期望输出值的另一列。
每个数据集都为一个或多个测试运行提供值。如果测试数据表中有三个数据集,则至少将执行三次相同的测试行为。(如果将集合和范围用作测试数据表中的值,则对于集合或范围中的每个值都将进行测试运行)。
测试数据表中包含一个类型列,可以编辑该列,从而使接口类型变量或者带有继承类的类型变量可具有用作实现类或子类的数据。例如,假定有一个名为 drawCalendar 的方法,该方法具有单个类型为 Calendar 的自变量,而该自变量又具有 GregorianCalendar 和 LunarCalendar 子类。如果想定义一组传递 GregorianCalendar 类型的对象的测试,则需要编辑自变量的类型字段。当您编辑类型时,原始的自变量类型就会显示在方法特征符中。