Testa din Azure Data Lake Analytics-kod

Azure Data Lake tillhandahåller U-SQL-språket . U-SQL kombinerar deklarativ SQL med imperativ C# för att bearbeta data i valfri skala. I det här dokumentet får du lära dig hur du skapar testfall för U-SQL och utökad UDO-kod (UDO) för C#.

Viktigt

Azure Data Lake Analytics tillbaka den 29 februari 2024. Läs mer med det här meddelandet.

För dataanalys kan din organisation använda Azure Synapse Analytics eller Microsoft Fabric.

Testa U-SQL-skript

U-SQL-skriptet kompileras och optimeras för körbar kod som ska köras i Azure eller på din lokala dator. Kompilerings- och optimeringsprocessen behandlar hela U-SQL-skriptet som helhet. Du kan inte göra ett traditionellt enhetstest för varje instruktion. Men genom att använda U-SQL-test-SDK och SDK för lokal körning kan du göra tester på skriptnivå.

Skapa testfall för U-SQL-skript

Med Azure Data Lake Tools för Visual Studio kan du skapa U-SQL-skripttestfall.

  1. Högerklicka på ett U-SQL-skript i Solution Explorer och välj sedan Skapa enhetstest.

  2. Skapa ett nytt testprojekt eller infoga testfallet i ett befintligt testprojekt.

    Data Lake Tools för Visual Studio – skapa en U-SQL-testprojektkonfiguration

Hantera testdatakällan

När du testar U-SQL-skript behöver du testa indatafiler. Om du vill hantera testdata går du till Solution Explorer, högerklickar på U-SQL-projektet och väljer Egenskaper. Du kan ange en källa i Testdatakälla.

Data Lake Tools för Visual Studio – konfigurera datakälla för projekttest

När du anropar Initialize() gränssnittet i U-SQL-test-SDK skapas en tillfällig rotmapp för lokala data under testprojektets arbetskatalog. Alla filer och mappar i mappen för testdatakällan kopieras till den tillfälliga lokala datarotmappen innan du kör U-SQL-skripttestfallen. Du kan lägga till fler mappar för testdatakällan genom att dela sökvägen till mappen testdata med ett semikolon.

Hantera databasmiljön för testning

Om dina U-SQL-skript använder eller frågar med U-SQL-databasobjekt måste du initiera databasmiljön innan du kör U-SQL-testfall. Den här metoden kan vara nödvändig när du anropar lagrade procedurer. Gränssnittet Initialize() i U-SQL-test-SDK hjälper dig att distribuera alla databaser som U-SQL-projektet refererar till till den tillfälliga rotmappen för lokala data i testprojektets arbetskatalog.

Mer information om hur du hanterar U-SQL-databasprojektreferenser för ett U-SQL-projekt finns i Referera till ett U-SQL-databasprojekt.

Verifiera testresultat

Gränssnittet Run() returnerar ett jobbkörningsresultat. 0 betyder framgång, och 1 betyder misslyckande. Du kan också använda C#-kontrollfunktioner för att verifiera utdata.

Köra testfall i Visual Studio

Ett U-SQL-skripttestprojekt bygger på ett C#-enhetstestramverk. När du har skapat projektet väljer du Testa>Windows>Test Explorer. Du kan köra testfall från Test Explorer. Du kan också högerklicka på filen .cs i enhetstestet och välja Kör tester.

Testa C# UDF:er

Skapa testfall för C#-UDF:er

Du kan använda ett C#-enhetstestramverk för att testa dina användardefinierade C#-operatorer (UDF). När du testar UDF:er måste du förbereda motsvarande IRowset-objekt som indata.

Det finns två sätt att skapa ett IRowset-objekt :

  • Läs in data från en fil för att skapa IRowset:

    //Schema: "a:int, b:int"
    USqlColumn<int> col1 = new USqlColumn<int>("a");
    USqlColumn<int> col2 = new USqlColumn<int>("b");
    List<IColumn> columns = new List<IColumn> { col1, col2 };
    USqlSchema schema = new USqlSchema(columns);
    
    //Generate one row with default values
    IUpdatableRow output = new USqlRow(schema, null).AsUpdatable();
    
    //Get data from file
    IRowset rowset = UnitTestHelper.GetRowsetFromFile(@"processor.txt", schema, output.AsReadOnly(), discardAdditionalColumns: true, rowDelimiter: null, columnSeparator: '\t');
    
  • Använd data från en datainsamling för att skapa IRowset:

    //Schema: "a:int, b:int"
    USqlSchema schema = new USqlSchema(
        new USqlColumn<int>("a"),
        new USqlColumn<int>("b")
    );
    
    IUpdatableRow output = new USqlRow(schema, null).AsUpdatable();
    
    //Generate Rowset with specified values
    List<object[]> values = new List<object[]>{
        new object[2] { 2, 3 },
        new object[2] { 10, 20 }
    };
    
    IEnumerable<IRow> rows = UnitTestHelper.CreateRowsFromValues(schema, values);
    IRowset rowset = UnitTestHelper.GetRowsetFromCollection(rows, output.AsReadOnly());
    

Verifiera testresultat

När du har anropat UDO-funktioner kan du verifiera resultaten via schema- och raduppsättningsvärdeverifieringen med hjälp av C#-kontrollfunktioner. Du kan lägga till ett U-SQL C# UDO Unit Test Project i din lösning. Det gör du genom att välja Arkiv > Nytt > projekt i Visual Studio.

Köra testfall i Visual Studio

När du har skapat projektet väljer du Testa>Windows>Test Explorer. Du kan köra testfall från Test Explorer. Du kan också högerklicka på filen .cs i enhetstestet och välja Kör tester.

Köra testfall i Azure Pipelines

Både U-SQL-skripttestprojekt och C# UDO-testprojekt ärver C#-enhetstestprojekt. Visual Studio-testuppgiften i Azure Pipelines kan köra dessa testfall.

Köra U-SQL-testfall i Azure Pipelines

För ett U-SQL-test kontrollerar du att du läser in CPPSDK på byggdatorn och skickar CPPSDK sedan sökvägen till USqlScriptTestRunner(cppSdkFolderFullPath: @"").

Vad är CPPSDK?

CPPSDK är ett paket som innehåller Microsoft Visual C++ 14 och Windows SDK 10.0.10240.0. Det här paketet innehåller den miljö som krävs av U-SQL-körningen. Du kan hämta det här paketet under installationsmappen för Azure Data Lake Tools for Visual Studio:

  • För Visual Studio 2015 finns den under C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake Tools for Visual Studio 2015\X.X.XXXX.X\CppSDK
  • För Visual Studio 2017 är det under C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
  • För Visual Studio 2019 är den under C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK

Förbereda CPPSDK i Azure Pipelines-byggagenten

Det vanligaste sättet att förbereda CPPSDK-beroendet i Azure Pipelines är följande:

  1. Zippa mappen som innehåller CPPSDK-biblioteken.

  2. Checka in filen .zip till källkontrollsystemet. Den .zip filen ser till att du checkar in alla bibliotek under MAPPEN CPPSDK så att filerna inte ignoreras på grund av en .gitignore fil.

  3. Packa upp .zip-filen i bygg-pipelinen.

  4. Peka USqlScriptTestRunner på den här uppackade mappen på byggdatorn.

Köra C# UDO-testfall i Azure Pipelines

Se till att referera till följande sammansättningar för ett C#-UDO-test, som behövs för UDO:er.

  • Microsoft.Analytics.Interfaces
  • Microsoft.Analytics.Types
  • Microsoft.Analytics.UnitTest

Om du refererar till dem via NuGet-paketet Microsoft.Azure.DataLake.USQL.Interfaces måste du lägga till en NuGet-återställningsuppgift i din bygg-pipeline.

Nästa steg