【问题标题】:Unit testing data flow in a ssis packagessis 包中的单元测试数据流
【发布时间】:2009-01-26 20:13:50
【问题描述】:

有没有办法在 ssis 包中对数据流进行单元测试。

例如:测试排序 - 验证排序是否正确完成。

【问题讨论】:

    标签: unit-testing ssis


    【解决方案1】:

    有一个用于 SSIS 的单元测试框架 - 请参阅 SSISUnit

    这值得一看,但它可能无法解决您的问题。可以使用此框架在控制流级别对单个组件进行单元测试,但无法隔离和单独的数据流转换 - 您只能测试整个数据流组件。

    您可以采取的一种方法是重新设计您的包并将您的 DataFlow 组件分解为多个可以单独测试的 DataFlow 组件。但是,这会影响您的包的性能,因为您必须在每个数据流任务之间的某处保留数据。

    您也可以采用这种方法,使用 NUnit 或类似框架,使用 SSIS api 加载包并执行单个任务。

    【讨论】:

    【解决方案2】:

    SSISTester 可以挖掘两个组件之间的数据流并将数据保存到文件中。可以在单元测试中访问输出。有关更多信息,请查看 ssistester.bytesoftwo.com。下面给出了如何使用 SSISTester 来实现此目的的示例:

    [UnitTest("DEMO", "CopyCustomers.dtsx", DisableLogging=true)]
    [DataTap(@"\[CopyCustomers]\[DFT Convert customer names]\[RCNT Count  customers]", @"\[CopyCustomers]\[DFT Convert customer names]\[DER Convert names to upper string]")]
    [DataTap(@"\[CopyCustomers]\[DFT Convert customer names]\[DER Convert names to upper string]", @"\[CopyCustomers]\[DFT Convert customer names]\[FFD Customers converted]")]
    public class CopyCustomersFileAll : BaseUnitTest
    {
        ...
        protected override void Verify(VerificationContext context)
        {
            ReadOnlyCollection<DataTap> dataTaps = context.DataTaps;
    
            DataTap dataTap = dataTaps[0];
            foreach (DataTapSnapshot snapshot in dataTap.Snapshots)
            {
                string data = snapshot.LoadData();
            }
    
            DataTap dataTap1 = dataTaps[1];
            foreach (DataTapSnapshot snapshot in dataTap1.Snapshots)
            {
                string data = snapshot.LoadData();
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      简短的回答 - 不容易。更长的答案:是的,但是您需要大量外部工具才能做到这一点。一个潜在的测试是抽取数据集的一个小样本,通过排序运行它,然后转储到一个 excel 文件。获取相同的数据集,将其复制到 Excel 电子表格中,然后手动对其进行排序。对来自 SSIS 的转储结果和您的手动排序示例运行二进制差异工具。如果一切顺利,那就对了。

      OTOH,不必对 SSIS 中的排序进行单元测试,除非您真正测试的是排序标准选择。该排序应该在发货前已经过 MS 测试。

      【讨论】:

        【解决方案4】:

        我会通过为适当的输入提供一个已知的良好文件来自动化测试,该文件与外部程序进行二进制比较。

        【讨论】:

          【解决方案5】:

          当我需要查看从组件到组件移动的数据时,我喜欢使用数据查看器。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-01
            相关资源
            最近更新 更多