在测试自动化中使用Java枚举
在决定用于存储测试数据的数据类型时,您可能需要满足以下条件:
-
允许声明多个属性
-
无行为或行为极少
-
允许轻松创建多个相似实体
对象几乎可以满足这些要求。但是,创建多个实体将意味着创建几个仅具有少量属性且没有行为或行为最少的对象。最小的行为转化为少量的方法。基本上,对于您需要的每个实体,都必须创建一个新的对象。那将是浪费。相反,可以使用一种特殊类型的Object Enum。
我们可以使用Enums来表示概念,例如:工作日,一年中的月份,浏览器或语言。在本文中,我想举例说明Enums的用法,该枚举具有多个属性和一个表示国家的构造函数。您可以在本文末尾找到GitHub链接,以链接到此处示例的所有代码。有关枚举是什么的信息,请参考官方文档。
在测试中使用Java枚举:国家/地区示例
对于此示例,让我们考虑一下,在测试中,您需要填写国家/地区特定的注册表。您需要在此表单中提供的一些详细信息是:国家/地区,该国家/地区的城市以及国家/地区专用的电话号码,所有这些都属于您要填写注册表格的客户。您正在使用的网站在全球许多国家/地区都可以使用。
为了进行测试,让我们缩小将要使用的国家/地区的范围:奥地利,爱沙尼亚和西班牙。这些国家/地区中的每个国家/地区都有我们需要在注册表格中提供的3个属性:国家/地区名称,城市列表和电话前缀。基于此前缀,我们可以生成一个测试电话号码。为了代表每个国家/地区,我们将使用枚举。用于表示国家/地区的常数值为:AT,EE和ES。
我们将声明枚举如下:
public enum Country {
AT("Austria", Arrays.asList("Vienna", "Salzburg", "Innsbruck"), 43),
EE("Estonia", Arrays.asList("Tallinn", "Haapsalu", "Tartu"), 372),
ES("Spain", Arrays.asList("Malaga","Madrid","Valencia","Corralejo"), 34);
public final String label;
public final List<String> cities;
public int phoneNumberPrefix;
Country(String label, List<String> cities, int phoneNumberPrefix) {
this.label = label;
this.cities = cities;
this.phoneNumberPrefix = phoneNumberPrefix;
}
}
首先我们为国家常数指定允许值的集合,以及所有属性的允许值。我们通过声明标签,城市和phoneNumberPrefix来定义这些属性的类型。它们是:一个字符串,一个字符串列表和一个整数。
构造函数在内部用于生成Enum值。因此,例如,“ AT”具有属性,其顺序与构造函数中参数的顺序相对应:“ 标签 ”属性值为“奥地利”,属于该国家/地区的“ 城市 ” 列表为:“维也纳”, “ Salzburg”,“ Innsbruck”和“ phoneNumberPrefix ”为43。
我们可以按如下方式检索与Enum常量相对应的属性:Country.CONSTANT.propertyName。例如:Country.AT.label将给我们“奥地利”。如您所见,Country属性是静态的。
在注册表格上,从下拉列表中选择国家,从另一个下拉列表中选择城市,并通过在字段中键入来提供电话号码。
为国家/地区特定信息创建的Page类包含以下条目:
@FindBy(css = &#