有了配置文件,我们需要编写代码从配置文件中读取测试数据。我们用一个接口类“SettersMap”来代表一个配置文件。参见图 1。附件“rule_test.zip”中的 BaseSettersMap.java 是 SettersMap 接口的一个实现。
图 1. SettersMap.java
我们提供了一个工厂接口 SettersMapFactory 来构造 SettersMap 。这里采用了抽象工厂(Abstract Factory)的设计模式。
清单 3. SettersMapFactory.java
1 /*
2 * Created on 2008-3-13
3 *
4 * TODO To change the template for this generated file go to
5 * Window - Preferences - Java - Code Style - Code Templates
6 */
7 package attributetest.binding.spi;
8
9 import java.io.File;
10
11 /**
12 * @author jsl
13 *
14 * TODO To change the template for this generated type comment go to
15 * Window - Preferences - Java - Code Style - Code Templates
16 */
17 public interface SettersMapFactory {
18
19 /**
20 *
21 * @return Factory 的名字
22 */
23 String getName();
24
25 /**
26 * 从配置文件创建 SettersMap ;
27 * @param file 配置文件对应的 File 对象;
28 * @return 根据配置文件创建的 SettersMap
29 */
30 SettersMap createSettersMap(File file);
31
32 /**
33 *
34 * @return 配置文件的扩展名,如 ".xls", ".txt" 。通常,SettersMapFactory 的类型
35 * 和配置文件的类型有一一对应的关系。
36 */
37 String getConfFileExtension();
38 }
2 * Created on 2008-3-13
3 *
4 * TODO To change the template for this generated file go to
5 * Window - Preferences - Java - Code Style - Code Templates
6 */
7 package attributetest.binding.spi;
8
9 import java.io.File;
10
11 /**
12 * @author jsl
13 *
14 * TODO To change the template for this generated type comment go to
15 * Window - Preferences - Java - Code Style - Code Templates
16 */
17 public interface SettersMapFactory {
18
19 /**
20 *
21 * @return Factory 的名字
22 */
23 String getName();
24
25 /**
26 * 从配置文件创建 SettersMap ;
27 * @param file 配置文件对应的 File 对象;
28 * @return 根据配置文件创建的 SettersMap
29 */
30 SettersMap createSettersMap(File file);
31
32 /**
33 *
34 * @return 配置文件的扩展名,如 ".xls", ".txt" 。通常,SettersMapFactory 的类型
35 * 和配置文件的类型有一一对应的关系。
36 */
37 String getConfFileExtension();
38 }
对于不同的文件格式,需要提供不同的“ SettersMapFactory ”。附件“ rule_test.zip “中的“ ExcelSettersMapFactory.java ”是一个 Excel 格式的实现。