java Pentaho Ketter:如何为转换/作业设置测试?
我已经使用Pentaho Kettle很长一段时间了,之前我所做的转换和工作(使用spoon)非常简单,从db加载、重命名等,然后输入到另一个db。但现在我一直在做转换,做一些更复杂的计算,我现在想以某种方式进行测试
所以我想做的是:
- 设置一些测试数据
- 运行转换
- 验证结果数据
一个选择可能是做一个水壶测试工作来测试转换。但是由于我的转换与java项目相关,我更愿意从jUnit运行测试。所以我考虑做一个jUnit测试,它将:
- 设置测试数据(使用dbunit)
- 运行转换(从命令行使用kitchen.sh)
- 验证结果数据(使用dbunit)
然而,这种方法将需要不总是可用的测试数据库(oracle等,昂贵的/遗留数据库),我更喜欢的是,如果我可以模拟或以某种方式将一些存根测试数据传递给输入步骤
关于如何测试Pentaho水壶转换还有其他想法吗
# 1 楼答案
如果将水壶作业分为两个阶段:
您可以在将数据加载到流的步骤结束时使用“复制行”来生成结果,在流程步骤开始时使用“从结果中获取行”来获取行
如果您这样做,那么您可以使用任何方法来加载数据(kettle transform,从ant脚本调用的dbunit),并可以模拟您想要的任何数据库表
我使用它来测试我编写的一些ETL脚本,它工作得很好
# 2 楼答案
在吉拉的某个地方有一个吉拉。宾塔霍。com(我手头没有)的要求正是这一点,但可惜它还没有实现
因此,您确实想到了正确的解决方案——我还将添加jenkins和ant脚本来将其结合在一起。我在报告测试中也做过类似的事情——实际上我有一个pentaho作业加载数据,然后它执行报告,然后将输出与已知输出进行比较,并报告通过/失败
# 3 楼答案
您可以使用数据验证程序步骤。当然,这不是一个完整的单元测试套件,但我认为有时用一种快速的方式检查数据完整性会很有用。 您可以一次运行多个测试
对于更“严肃”的测试,我将推荐@codek answer并在詹金斯领导下执行您的水壶