BIRT 报表的自动化测试

发表于:2011-4-27 17:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  清单 2. 生成 .rptdocument 文件

IReportRunnable runnable = engine.openReportDesign(designFile);
IRunTask task = engine.createRunTask(runnable);
task.run(documentFile);

  这样,我们就能够得到包含报表数据的 .rptdocument 文件了。然后就可以编写测试用例进行验证。

  读取 rptdocument 文件数据进行验证

  rptdocument 文件内容根据 rptdesign 的不同而有所区别,测试用例的写法也不一样。以下以 BIRT help 教程中的 Tutorial3 Inventory 报表为例讲述如何读取其数据进行自动化测试。该报表使用预览视图时内容如图 2 所示。

图 2. Inventory 报表内容预览

  BIRT API 中提供了 DataExtractionTask 来从 rptdocument 中提取数据。

  清单 3. 建立数据读取任务

IReportDocument reportDocument = engine.openReportDocument(documentFile);
IDataExtractionTask dataExtractionTask = engine.createDataExtractionTask(reportDocument);

  而在这过程中,BIRT 是按照不同的 DataSet 来分别提取数据的,在本例中,该报表最后的结果只有一个 Dataset。让 DataExtractionTask 来选中这个 Dataset

  清单 4. 选择数据集

List<?> list = dataExtractionTask.getResultSetList();
IResultSetItem resultSetItem = (IResultSetItem) list.get(0);
String resultSetName = resultSetItem.getResultSetName();
dataExtractionTask.selectResultSet(resultSetName);

  每一个 Dataset 是由多个数据列组成的。DataExtractionTask 可以从中选取部分数据列来提取数据,在这个例子中,我们选取提取所有数据列中的数据。

  清单 5. 选择数据列

IResultMetaData resultMetaData = resultSetItem.getResultMetaData();
int columnCount = resultMetaData.getColumnCount();
String[] columnNames = new String[columnCount];
for (int i = 0; i < columnCount; i++){
         columnNames[i] = resultMetaData.getColumnName(i);
}
dataExtractionTask.selectColumns(columnNames);

  这样,我们就可以开始提取数据了,BIRT 会返回一个迭代器,每次迭代都会取到一行数据,然后通过 getValue(index) 方法得到这行数据中的某一个值。下面的代码把整个数据集全部取出来,与预先算得的结果进行比较。在实际使用中,数据集可能很大,因此可以根据情况只比较中间的一部分。

  清单 6. 获取报表中的数据

IExtractionResults extractionResults = dataExtractionTask.extract();
IDataIterator dataIterator = extractionResults.nextResultIterator();
StringBuffer stringBuffer = new StringBuffer();
while (dataIterator.next()){
        for (int j = 0; j < columnNames.length; j++){
            Object object = dataIterator.getValue(j);
            if (object != null){
                     stringBuffer.append(object.toString());
                  if (j < columnNames.length - 1){
                                stringBuffer.append("|");
                  }
            }
       }
       stringBuffer.append("\n");
}
assertEquals(stringBuffer.toString(), actualResult);

  其中 actualResult 代表该数据集的字符串表示,是预期的正确结果。

32/3<123>
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号