C# usql应用程序和脚本的单元测试

C# usql应用程序和脚本的单元测试,c#,azure-data-lake,u-sql,C#,Azure Data Lake,U Sql,我有一个自定义的USql应用程序,它扩展了IApplier类 [SqlUserDefinedApplier] public class CsvApplier : IApplier { public CsvApplier() { //totalcount = count; } public override IEnumerable<IRow> Apply(IRow input, IUpdatableRow output) {

我有一个自定义的USql应用程序,它扩展了
IApplier

[SqlUserDefinedApplier]
public class CsvApplier : IApplier
{
    public CsvApplier()
    {
        //totalcount = count;
    }
    public override IEnumerable<IRow> Apply(IRow input, IUpdatableRow output)
    {
        //....custom logic
        //yield return or yield break
    }
}
我已经能够为applier的解耦部分编写单元测试/atp

如何为
Apply
方法的C#code和依赖于输入/输出的自定义逻辑编写测试?
如何使用定义的输入和输出自动测试usql脚本,从而不需要数据湖帐户?

VisualStudio的ADL工具具有本地模式,因此您也可以在本地执行UDO。尽管您可能无法在本地获得完整的并行处理,但您应该能够在本地运行中测试代码。

正如@Michael Rys提到的,目前可以通过使用U-SQL本地运行来完成,但不一定在Visual Studio中

我们试图通过向您提供“U-SQL本地运行SDK”来解决这个问题,您可以使用它作为本地运行脚本的一种方式。然后,您可以通过编写一些C#单元测试包装来利用它测试U-SQL脚本,然后在CI系统/构建服务器中运行这些单元测试

我们正在通过NuGet发布此SDK,但是如果您对它感兴趣,您可以给我发送电子邮件到Microsoft.com的xiaoyzhu,我们可以向您发送我们试图发布的代码

谢谢


Azure Data Lake团队的朱晓勇

在我们发布独立的U-SQL Localrun SDK包之前,请从安装VS的ADLA工具的位置获取所需的文件

在VS2015中,本地运行所需的所有依赖项都位于“C:\Program Files(x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake DRI Tools for Visual Studio 2015\2.0.XXXX.0\LocalRunSDK”中。您还需要“C:\Program Files(x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake用于Visual Studio 2015的DRI工具\2.0.XXXX.0\CppSDK“

只需从这两个文件夹中复制文件并将其放置在如下位置:

C:\USQLLocalRunSDK

然后,您可以使用“LocalRunHelper.exe”在本地编译和运行u-sql脚本。在编译命令行上,您需要两个选项: -DataRoot“存储本地元数据和数据的位置”,与ADLA工具中的设置选项相同。 -CppSDK“复制CppSDK文件的位置” 该工具在出错(编译或运行)时返回-1,成功时返回0


只需运行该工具即可查看命令行选项列表。

我可以手动测试脚本,但是,有没有办法让我自动化测试。例如,另一个开发人员对脚本进行了更改,我需要定期测试脚本是否仍然满足输入/输出要求。正在生产中寻找脚本的单元测试方面。Ju更新后,我们发布了独立SDK。文档如下:
@log =
SELECT t.ultimateID,
t.siteID,
.
.
.
t.eTime,
t.hours
FROM @logWithCount
CROSS APPLY
new BSWBigData.USQLApplier.CsvApplier() AS t(ultimateID string, siteID string, .... , eTime string, hours double, count long?);