给报表设置参数
报表的内容通常会随着用户输入参数的不同而变化,这也是报表的一个重要特性。测试的时候我们也需要给报表输入不同的参数,尽量覆盖各种可能的情况,看报表的数据是否正确。
使用 BIRT API 给报表设置参数非常简单,调用其 task 对象的 setParameterValue 方法即可。在本例 Inventory 报表中,有一个 RP_quantityinstock 的参数,它表示找到库存中数量少于这个参数值的物品,并把它们显示在报表上。以下代码表示设置这个参数值为 500。
清单 7. 设置报表参数
IRunTask task = engine.createRunTask(runnable); task.setParameterValue("RP_quantityinstock", 500); task.run(documentFile); |
改变报表的数据源
在实际工程应用中,我们制做的报表一般不会把数据源给写死,而是使用 JNDI 等技术统一管理配置数据源。这样可以增加报表的灵活性,使其方便的连接到不同的数据源上。而在测试的时候,我们需要让报表连到某个特定的测试数据库,这样我们就可以预先知道报表的运行结果来进行对比测试。因此,在编写自动化测试用例时,我们需要改变报表数据源的配置,让其指向我们准备好的测试数据库。
设置数据源的代码相对复杂一些,首先要通过 ReportRunnable 对象得到其 ReportDesignHandle 对象,该对象管理报表设计中的各项元素。然后通过该对象找到数据源对象 OdaDataSourceHandle,其中参数“Data Source”表示数据源的名字。最后我们就可以对数据源对象进行配置了,下面的代码显示如何把数据源改变为 BIRT 自带的示例数据库。
清单 8. 给报表设置数据源
IReportRunnable runnable = engine.openReportDesign(designFile); ReportDesignHandle design = (ReportDesignHandle) runnable.getDesignHandle().getModuleHandle(); OdaDataSourceHandle dsh = (OdaDataSourceHandle)design.findDataSource("Data Source"); dsh.setProperty("odaURL", "jdbc:classicmodels:sampledb"); dsh.setProperty("odaUser", "ClassicModels"); dsh.setProperty("odaDriverClass", "org.eclipse.birt.report.data.oda.sampledb.Driver"); |
小结
本文介绍了对 BIRT 报表进行自动化测试的方法和最佳实践。编写自动化测试用例在一开始会比较困难,但是一经完成可以大大提高测试效率和质量,降低成本,一劳永逸。特别是在大型项目中,报表的自动化测试显得更为重要。