Uw Azure Data Lake Analytics-code testen

Azure Data Lake biedt de U-SQL-taal . U-SQL combineert declaratieve SQL met imperatieve C# om gegevens op elke schaal te verwerken. In dit document leert u hoe u testcases maakt voor U-SQL en uitgebreide C#-code van de gebruiker gedefinieerde operator (UDO).

Belangrijk

Azure Data Lake Analytics op 29 februari 2024 buiten gebruik gesteld. Meer informatie over deze aankondiging.

Voor gegevensanalyse kan uw organisatie gebruikmaken van Azure Synapse Analytics of Microsoft Fabric.

U-SQL-scripts testen

Het U-SQL-script is gecompileerd en geoptimaliseerd voor uitvoerbare code die kan worden uitgevoerd in Azure of op uw lokale computer. Het compilatie- en optimalisatieproces behandelt het hele U-SQL-script als geheel. U kunt niet voor elke instructie een traditionele eenheidstest uitvoeren. Door de U-SQL-test-SDK en de SDK voor lokale uitvoering te gebruiken, kunt u echter tests op scriptniveau uitvoeren.

Testcases maken voor U-SQL-script

Met Azure Data Lake Tools voor Visual Studio kunt u testcases voor U-SQL-scripts maken.

  1. Klik met de rechtermuisknop op een U-SQL-script in Solution Explorer en selecteer vervolgens Eenheidstest maken.

  2. Maak een nieuw testproject of voeg de testcase in een bestaand testproject in.

    Data Lake Tools voor Visual Studio : een U-SQL-testprojectconfiguratie maken

De testgegevensbron beheren

Wanneer u U-SQL-scripts test, hebt u testinvoerbestanden nodig. Als u de testgegevens wilt beheren, klikt u in Solution Explorer met de rechtermuisknop op het U-SQL-project en selecteert u Eigenschappen. U kunt een bron invoeren in Gegevensbron testen.

Data Lake Tools voor Visual Studio - projecttestgegevensbron configureren

Wanneer u de Initialize() interface in de U-SQL-test-SDK aanroept, wordt er een tijdelijke lokale hoofdmap voor lokale gegevens gemaakt in de werkmap van het testproject. Alle bestanden en mappen in de map met de testgegevensbron worden gekopieerd naar de tijdelijke lokale gegevenshoofdmap voordat u de U-SQL-scripttestcases uitvoert. U kunt meer mappen met testgegevensbronnen toevoegen door het pad van de testgegevensmap te splitsen met een puntkomma.

De databaseomgeving beheren voor testen

Als uw U-SQL-scripts gebruikmaken van of query's uitvoeren met U-SQL-databaseobjecten, moet u de databaseomgeving initialiseren voordat u U-SQL-testcases uitvoert. Deze benadering kan nodig zijn bij het aanroepen van opgeslagen procedures. De Initialize() interface in de U-SQL test SDK helpt u bij het implementeren van alle databases waarnaar wordt verwezen door het U-SQL-project naar de tijdelijke lokale gegevenshoofdmap in de werkmap van het testproject.

Zie Verwijzen naar een U-SQL-databaseproject voor meer informatie over het beheren van U-SQL-databaseprojectverwijzingen voor een U-SQL-project.

Testresultaten controleren

De Run() interface retourneert een taakuitvoeringsresultaat. 0 betekent succes en 1 betekent mislukken. U kunt ook C#-assertfuncties gebruiken om de uitvoer te controleren.

Testcases uitvoeren in Visual Studio

Een U-SQL-scripttestproject is gebouwd op basis van een C#-eenheidstestframework. Nadat u het project hebt gebouwd, selecteert u Test>Windows>Test Explorer. U kunt testcases uitvoeren vanuit Test Explorer. U kunt ook met de rechtermuisknop op het .cs-bestand in de eenheidstest klikken en Tests uitvoeren selecteren.

C# UDF's testen

Testcases maken voor C#-UDF's

U kunt een C#-eenheidstestframework gebruiken om uw door de gebruiker gedefinieerde C#-operators (UDF's) te testen. Bij het testen van UDF's moet u overeenkomende IRowset-objecten als invoer voorbereiden.

Er zijn twee manieren om een IRowset-object te maken:

  • Gegevens laden uit een bestand om IRowset te maken:

    //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');
    
  • Gegevens uit een gegevensverzameling gebruiken om IRowset te maken:

    //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());
    

Testresultaten controleren

Nadat u UDO-functies hebt aangeroepen, kunt u de resultaten controleren via het schema en verificatie van de waarde van rijensets met behulp van C#-assertfuncties. U kunt een U-SQL C#UDO Unit Test Project toevoegen aan uw oplossing. Selecteer hiervoor Nieuw project bestand >> in Visual Studio.

Testcases uitvoeren in Visual Studio

Nadat u het project hebt gebouwd, selecteert u Test>Windows>Test Explorer. U kunt testcases uitvoeren vanuit Test Explorer. U kunt ook met de rechtermuisknop op het .cs-bestand in de eenheidstest klikken en Tests uitvoeren selecteren.

Testcases uitvoeren in Azure Pipelines

Zowel U-SQL-scripttestprojecten als C# UDO-testprojecten nemen C#-eenheidstestprojecten over. De Visual Studio-testtaak in Azure Pipelines kan deze testcases uitvoeren.

U-SQL-testcases uitvoeren in Azure Pipelines

Voor een U-SQL-test moet u ervoor zorgen dat u op uw buildcomputer laadt CPPSDK en vervolgens het CPPSDK pad doorgeeft aan USqlScriptTestRunner(cppSdkFolderFullPath: @"").

Wat is CPPSDK?

CPPSDK is een pakket dat Microsoft Visual C++ 14 en Windows SDK 10.0.10240.0 bevat. Dit pakket bevat de omgeving die nodig is voor de U-SQL-runtime. U kunt dit pakket downloaden in de installatiemap van Azure Data Lake Tools voor Visual Studio:

  • Voor Visual Studio 2015 staat dit onder 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
  • Voor Visual Studio 2017 staat dit onder C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
  • Voor Visual Studio 2019 staat dit onder C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK

CPPSDK voorbereiden in de Build-agent van Azure Pipelines

De meest voorkomende manier om de CPPSDK-afhankelijkheid in Azure Pipelines voor te bereiden, is als volgt:

  1. Zip de map met de CPPSDK-bibliotheken.

  2. Controleer het .zip-bestand naar uw broncodebeheersysteem. Het .zip-bestand zorgt ervoor dat u alle bibliotheken in de map CPPSDK incheckt, zodat bestanden niet worden genegeerd vanwege een .gitignore bestand.

  3. Pak het .zip-bestand uit in de build-pijplijn.

  4. Wijs USqlScriptTestRunner deze uitgepakte map aan op de buildcomputer.

C# UDO-testcases uitvoeren in Azure Pipelines

Voor een C# UDO-test moet u verwijzen naar de volgende assembly's, die nodig zijn voor UDO's.

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

Als u ernaar verwijst via het NuGet-pakket Microsoft.Azure.DataLake.USQL.Interfaces, moet u een NuGet Restore-taak toevoegen aan uw build-pijplijn.

Volgende stappen